最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#泛型約束的深入理解

 更新時(shí)間:2013年05月31日 11:32:16   作者:  
本篇文章是對(duì)C#中的泛型約束進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
where 子句用于指定類型約束,這些約束可以作為泛型聲明中定義的類型參數(shù)的變量。
1.接口約束。
例如,可以聲明一個(gè)泛型類 MyGenericClass,這樣,類型參數(shù) T 就可以實(shí)現(xiàn) IComparable<T> 接口:
復(fù)制代碼 代碼如下:

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

2.基類約束:指出某個(gè)類型必須將指定的類作為基類(或者就是該類本身),才能用作該泛型類型的類型參數(shù)。
這樣的約束一經(jīng)使用,就必須出現(xiàn)在該類型參數(shù)的所有其他約束之前。
復(fù)制代碼 代碼如下:

class MyClassy<T, U>
where T : class
where U : struct
{
}

3.where 子句還可以包括構(gòu)造函數(shù)約束。
可以使用 new 運(yùn)算符創(chuàng)建類型參數(shù)的實(shí)例;但類型參數(shù)為此必須受構(gòu)造函數(shù)約束 new() 的約束。new() 約束可以讓編譯器知道:提供的任何類型參數(shù)都必須具有可訪問的無(wú)參數(shù)(或默認(rèn))構(gòu)造函數(shù)。例如:
復(fù)制代碼 代碼如下:

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.對(duì)于多個(gè)類型參數(shù),每個(gè)類型參數(shù)都使用一個(gè) where 子句
例如:
復(fù)制代碼 代碼如下:

interface MyI { }
class Dictionary<TKey,TVal>
where TKey: IComparable, IEnumerable
where TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

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

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

請(qǐng)注意,對(duì)于委托和方法兩者來(lái)說(shuō),描述類型參數(shù)約束的語(yǔ)法是一樣的:
復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • unity通過Mesh網(wǎng)格繪制圖形(三角形、正方體、圓柱)

    unity通過Mesh網(wǎng)格繪制圖形(三角形、正方體、圓柱)

    這篇文章主要為大家詳細(xì)介紹了unity通過Mesh網(wǎng)格繪制圖形:三角形、正方體、圓柱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C#難點(diǎn)逐個(gè)擊破(1):ref參數(shù)傳遞

    C#難點(diǎn)逐個(gè)擊破(1):ref參數(shù)傳遞

    一般情況,方法的參數(shù)傳遞是通過值進(jìn)行傳遞的,另一種情況是引用傳遞,大家可以參考下。
    2010-02-02
  • C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位)

    C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位)

    這篇文章主要介紹了C# 時(shí)間與時(shí)間戳互轉(zhuǎn)的方法(13位),詳細(xì)的介紹了常出現(xiàn)的幾種時(shí)間方式及其時(shí)間與時(shí)間戳互轉(zhuǎn)的方法,非常具有實(shí)用價(jià)值,希望此文章對(duì)各位有所幫助
    2018-10-10
  • c++函數(shù)轉(zhuǎn)c#函數(shù)示例程序分享

    c++函數(shù)轉(zhuǎn)c#函數(shù)示例程序分享

    這篇文章主要介紹了c++函數(shù)轉(zhuǎn)c#函數(shù)示例程序,大家參考使用吧
    2013-12-12
  • C#實(shí)現(xiàn)將Excel工作表拆分為多個(gè)窗格

    C#實(shí)現(xiàn)將Excel工作表拆分為多個(gè)窗格

    在日常工作中,我們經(jīng)常需要處理包含大量數(shù)據(jù)的 Excel 文件,本文將深入探討如何在 C# 中利用強(qiáng)大的 Spire.XLS for .NET 自動(dòng)化實(shí)現(xiàn) Excel 工作表的窗格拆分功能,感興趣的小伙伴可以了解下
    2025-12-12
  • C#結(jié)合AForge實(shí)現(xiàn)攝像頭錄像

    C#結(jié)合AForge實(shí)現(xiàn)攝像頭錄像

    最近由于興趣學(xué)習(xí)了下在C#上使用AForge錄制攝像頭視頻并壓縮編碼。總體上來(lái)說(shuō)這個(gè)第三方.net視覺開發(fā)庫(kù)還是比較穩(wěn)定的
    2017-09-09
  • C#特性-對(duì)象集合初始化器介紹

    C#特性-對(duì)象集合初始化器介紹

    在寫一些實(shí)體類的時(shí)候,我們往往在寫構(gòu)造方法的時(shí)候思考很長(zhǎng)時(shí)間,除了一個(gè)無(wú)參構(gòu)造器外還在想需要寫幾個(gè)構(gòu)造器呢?哪些參數(shù)是需要初始化的?,F(xiàn)在你再也不需要為這事煩惱了
    2014-12-12
  • c#學(xué)習(xí)教程之JSON文件及解析實(shí)例

    c#學(xué)習(xí)教程之JSON文件及解析實(shí)例

    json作為互聯(lián)網(wǎng)上輕量便捷的數(shù)據(jù)傳輸格式,越來(lái)越受到重視,下面這篇文章主要給大家介紹了關(guān)于c#學(xué)習(xí)教程之JSON文件及解析的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • C# 正則表達(dá)式常用的符號(hào)和模式解析(最新推薦)

    C# 正則表達(dá)式常用的符號(hào)和模式解析(最新推薦)

    這篇文章主要介紹了C# 正則表達(dá)式常用的符號(hào)和模式解析,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 深入了解c# 迭代器和列舉器

    深入了解c# 迭代器和列舉器

    這篇文章主要介紹了c# 迭代器和列舉器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

卓资县| 江油市| 晋州市| 临汾市| 巴马| 棋牌| 利津县| 历史| 澄迈县| 双牌县| 密云县| 会泽县| 江阴市| 驻马店市| 新丰县| 伽师县| 青川县| 左贡县| 迁西县| 同江市| 宣城市| 石渠县| 故城县| 湟中县| 赤城县| 历史| 同仁县| 富宁县| 杭锦旗| 高邑县| 巧家县| 安西县| 西乌| 耿马| 叶城县| 渑池县| 灵山县| 淮阳县| 松江区| 台北县| 稻城县|