同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁 優(yōu)化推廣 .NET WHERE子句用途

.NET WHERE子句用途

來源: | 時間:2012/12/25 21:17:22 |

where 子句用于指定類型約束,這些約束可以作為泛型聲明中定義的類型參數(shù)的變量。
    1.接口約束。
         例如,可以聲明一個泛型類 MyGenericClass,這樣,類型參數(shù) T 就可以實現(xiàn) IComparable<T> 接口:

public class MyGenericClass<T> where T:IComparable { }

    2.基類約束:指出某個類型必須將指定的類作為基類(或者就是該類本身),才能用作該泛型類型的類型參數(shù)。
          這樣的約束一經(jīng)使用,就必須出現(xiàn)在該類型參數(shù)的所有其他約束之前。
class MyClassy<T, U>
        where T : class
        where U : struct
{
}

     3.where 子句還可以包括構(gòu)造函數(shù)約束。
         可以使用 new 運算符創(chuàng)建類型參數(shù)的實例;但類型參數(shù)為此必須受構(gòu)造函數(shù)約束 new() 的約束。new() 約束可以讓編譯器知道:提供的任何類型參數(shù)都必須具有可訪問的無參數(shù)(或默認)構(gòu)造函數(shù)。例如:
public class MyGenericClass <T> where T: IComparable, new()
{
        // The following line is not possible without new() constraint:
         T item = new T();
}
new() 約束出現(xiàn)在 where 子句的最后。

   4.對于多個類型參數(shù),每個類型參數(shù)都使用一個 where 子句,
   例如:
interface MyI { }
class Dictionary<TKey,TVal>
where TKey: IComparable, IEnumerable
where TVal: MyI
{
        public void Add(TKey key, TVal val)
         {
         }
}

5.還可以將約束附加到泛型方法的類型參數(shù),例如:

public bool MyMethod<T>(T t) where T : IMyInterface { }

請注意,對于委托和方法兩者來說,描述類型參數(shù)約束的語法是一樣的:

delegate T MyDelegate<T>() where T : new()

服務熱線

153 8323 9821

功能和特性

價格和優(yōu)惠

網(wǎng)站和維護

推廣和優(yōu)化

微信服務號