.Net Framework 3.5中的新增特性
一、.Net Framework 3.5中的新增特性: 1、隐式类型化的变量 ???? 例如 Var = 5;Linq就使用这个功能。 2、自动实现属性 ???? 例如 public int MyProperty {get;set} 3、对象和集合初始化器 ???? 例如 MyStructure mystructure = new MyStructure() {MyProperty1 = 10,MyProperty2 = 20} ??????????? ?List<int> myInt = new List<int>() {1,2,3} 4、Linq,可以查询对象、数据集、SqlServer数据库、XML等 ? 二、泛型类的特性 1、默认值:default关键字用于将泛型初始化为null或0 ???? 例如 T obj = default(T); 2、约束:定义泛型类型的类时,如果要求实例化的类必须实现某个接口时,可以加上约束。 ???? 例如 public interface ImyInterface {...} ???????????? public class BaseClass : ImyInterface {...} ???????????? public class MyClass<TBaseClass > ?????????????????????? where TBaseClass : ImyInterface {...} ? ??????????? Main() ??????????? { ?????????????? ?//只有实现了ImyInterface接口的类才能去声明MyClass泛型类 ??????????????? MyClass<BaseClass> myClass = new MyClass<BaseClass>(); ??????????? } ?????还可以合并多个约束,例如:where T:I1,new(),意思是必须继承I1接口且必须有一个默认构造函数。 3、继承:泛型类可以继承泛型接口也可以派生于一个泛型类。 ???? 例如:public class MyClass<T>:IMyInterface<T> ????????????? public class MyClass<T>:Base<T> ????????????? public class MyClass<T>:Base<String> 4、静态成员:泛型类的静态成员只能在类的一个实例中共享。 ???? 例如:public class MyClass<T> ????????????? { ?????????????????? public static int x; ????????????? } ????????????? MyClass<int>.x = 1; ????????????? MyClass<String>.x = 2; ????????????? 两个实例的值互不影响。 三、泛型接口 ????? 泛型可以定义接口,接口中的方法可以带泛型参数 ????? 例如:public interface IMyInterface<T> ?????????????? { ??????????????????? int MyFunction(T val); ?????????????? }??? 四、泛型方法 ????? void func<T>(ref T val); ??????调用方式:1、func<int>(ref 1); ???????????????????? 2、func(1);??? 五、泛型委托 ????? 例如: ?????? ?public delegate T MyFunc<T>(T t); ??????? public static T getVal<T>(T t,MyFunc<T> f) ??????????? retVal = f(t); ??????????? return retVal; ???? 调用方式: ???? 1、匿名方法调用方式: ????????? string j = MyClass.getVal<string>("liangyuhui",delegate(string s){return "I am " + s;});//j=I am liangyuhui ?????2、λ表达式方式: ????????? int i = MyClass.getVal<int>(100,p => { return p + 100; });??//i=200? ???? 采用委托引用的方法,可以实现任何逻辑。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |