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>()
{
}
}
}
}