.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)
        {
            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 

     採用委託引用的方法,可以實現任何邏輯。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章