C#泛型
2015-12-22 16:46
323 查看
1.泛型简介
简要来说泛型其实就是对类的抽象,是比类型更抽象的一级。对类来说,类是具有相同属性和方法的一类对象的集合,也就是具有相同属性的对象的抽象。而泛型是具有相同执行指令的类型的集合,泛型是这些相似类型的一个模板,是对他们的更高一级的抽象。
2.为什么使用泛型
举例来说,现在有一个类,类中有一个某个类型的数组以及一个获取数组某索引的值的一个方法。代码如下:
static void Main(string[] args) { MyGeneric<int> mygen = new MyGeneric<int>();//用int类型代替占位符 mygen.SetArr(new int[] {1,2,3 }); int a=mygen.GetValue(1); MyGeneric<string> mygen2 = new MyGeneric<string>();//用string类型代替占位符 mygen2.SetArr(new string[] {"1","2","3" }); string b = mygen2.GetValue(1); }
View Code
4.泛型方法
泛型方法的申明比普通方法的申明多了一对尖括号和泛型参数,例如:public void MyGenericMethod<T>(T t)
如果有多个泛型模板,中间用“,”隔开,如:
public T MyGenericMethod<T,R>(T t,R r)
泛型方法的调用:我们先申明一个没有返回值的泛型方法:MyMethod
static void MyMethod<T>(T[] arr) { foreach (T item in arr) { Console.WriteLine(item.ToString()); } }
接着在main方法中调用:
static void Main(string[] args) { MyMethod<string>(new string[] {"1","2","3" });//泛型类型为string MyMethod(new string[] { "1", "2", "3" }); //这个调用编译器自动根据参数推断类型 MyMethod<int>(new int[] { 1, 2, 3 }); MyMethod(new int[] {1,2,3}); }
5.泛型委托
泛型委托的申明方式和直接申明委托的方式就多了一对尖括号,形式是这样的:delegate R MyDelgate<T,R>(T t)
关键字说明:
delegate:申明委托的关键字
R:申明委托的返回类型
<T,R>:泛型委托的类型参数
T t :委托的形式参数
泛型委托实例:
public delegate void MyDel<T>(T t);//没有返回类型的泛型委托 public delegate R MyDel<T,R>(T t); //有返回类型的委托
6.泛型中的协变和逆变(待续)
7.泛型接口(待续)
相关文章推荐
- c#面向对象基础 静态成员、构造函数、命名空间与类库
- C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
- 分分钟用上C#中的委托和事件之窗体篇
- C# 打印PDF文件之使用不同打印机打印所有页面或部分页面
- C#中控制设计模式下返回
- C# 打印PDF文件之使用不同打印机打印所有页面或部分页面
- Web Service开发
- C# ——窗体和控件随着分辨率的变化自适应大小
- C#当中的多线程_任务并行库(下)
- C#开发命名规范
- C#——小知识点
- c#一维条码生成图片
- C# Winform窗体和控件自适应大小
- C#中反射泛型 CreateInstance
- C# 修改GroupBox的边框颜色和字体颜色
- C#中Split用法~
- C#平衡树(AVLTree)
- C#邮件发送帮助类
- C# —— 基本语法
- C# —— 一个C# 程序主要部分