using System.Collections; using System.Collections.Generic; using static System.Console; //泛型 主要优点是性能 与c++模板相似 但c++在使用时需要其源代码 //而.NET泛型可在一种语言中定义,在任何其他.NET语言中使用 namespace lwm { class Program { static void Main() { //装箱 拆箱 性能损失大 var list = new ArrayList(); list.Add(44);//可添加任意类型 int i1 = (int)list[0]; //泛型 类型安全 var list1 = new List<int>(); list1.Add(44); i1 = list1[0]; foreach (int i in list1) WriteLine(i); LinkedListNode<int> list2 = new LinkedListNode<int>(); ReadKey(); } //自定义泛型类 public class LinkedListNode<T> where T: struct//约束条件,可以没有 //struct T必须是值类型 class 必须是引用类型 //IFoo:必须实现接口IFoo //Foo:必须派生自Foo //new():T必须有一个默认构造函数 //T2:T必须派生自泛型T2 { public LinkedListNode() {//default 将null赋予引用类型,将0赋予值类型 Value = default(T); } public LinkedListNode(T value) { Value = value; } public T Value { get; private set; } public LinkedListNode<T> Next { get; internal set; } public LinkedListNode<T> Prev { get; internal set; } } //自定义泛型结构 public struct st<T> { } //泛型方法 void fun1<T>() { } //泛型成员方法 public class MyClass { public void fun<T>() { } } } }