一、.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)
{
T retVal = default(T);
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
采用委托引用的方法,可以实现任何逻辑。