//灵活使用别名使代码更加精简。 using ZClass2 = ZClass<Xparameter<string>, string>; class XClass { //泛型方法 public static void MethodA<z>(z param) { Console.Write(param.GetType().ToString()); } } class YClass<T> { public T MethodA() { T t=default(T); return t; } } class Xparameter<p> { public static void MethdB(p data) { } } class ZClass<z,v>{ public static void MethdB(z key,v data){} } class Program { //泛型:generic 具有参数的类型,参数是捡来类型的占用符,一般类型包括类、借口、和结构。 static void Main(string[] args) { //Xparameter<string>代表一个类。 //ZClass<Xparameter<string>, string> z = new ZClass<Xparameter<string>, string>(); ZClass2 z = new ZClass2(); } }
.net之约束:
1,派生约束:
class Program { static void Main(string[] args) { XClass x = new XClass(); YClass y = new YClass(); ZClassz<YClass, XClass> z = new ZClassz<YClass, XClass>(); //error! //ZClassz<XClass, YClass> z = new ZClassz<XClass, YClass>(); } } public class XClass{ } public class YClass{ } public class ZClassz<y,v>where v:XClass where y:YClass{ }
(例)节点约束:
2,接口约束:
3,值类型约束:
4,引用类型约束: