一、.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
採用委託引用的方法,可以實現任何邏輯。