国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入理解C#泛型:new與where關(guān)鍵字全解析

這篇具有很好參考價(jià)值的文章主要介紹了深入理解C#泛型:new與where關(guān)鍵字全解析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

C#泛型中new和where是重要的關(guān)鍵字,它們都可以用于約束泛型類型參數(shù)的限制;它們都用于提高代碼的安全性和可用性,它們的作用在很大程度上提高了代碼的可讀性和可維護(hù)性。在這篇文章中,我們將一起了解泛型中的new和where,以及它們之間的區(qū)別。

1. new關(guān)鍵字

在C#泛型中,new關(guān)鍵字被用于指定泛型類型參數(shù)必須具有公共的無(wú)參數(shù)構(gòu)造函數(shù)。

使用new關(guān)鍵字指定泛型類型參數(shù)需要有無(wú)參數(shù)構(gòu)造函數(shù)時(shí),可以保證我們?cè)谑褂梅盒皖愋蛥?shù)來(lái)創(chuàng)建實(shí)例時(shí)不會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤。如果我們使用了沒(méi)有公共無(wú)參數(shù)構(gòu)造函數(shù)的泛型類型參數(shù),就會(huì)在運(yùn)行時(shí)拋出異常。

使用示例:

 class ItemFactory<T> where T : new()
    {
        public T Fun()
        {
            var t=new T();
            return t;
        }
    }
????//調(diào)用:
????  public  class Test
    {
        public  void Testfun()
{
            var rel= new ItemFactory<Pet>();
            rel.Fun();
         }
    }
????public??class?Pet
    {
        //new默認(rèn)帶無(wú)參數(shù)構(gòu)造函數(shù),如果有參數(shù)的構(gòu)造函數(shù)報(bào)錯(cuò)
        //public Pet(string test)
        //{ }
        public string Name { get; set; }
        public int Age { get; set; }
    }

.NET默認(rèn)類帶一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)。

2. where關(guān)鍵字

在C#泛型中,where關(guān)鍵字用于指定泛型類型參數(shù)的約束條件。泛型定義中的 where 子句指定對(duì)用作泛型類型、方法、委托或本地函數(shù)中類型參數(shù)的參數(shù)類型的約束。約束可指定接口、基類或要求泛型類型為引用、值或非托管類型。約束聲明類型參數(shù)必須具有的功能,并且約束必須位于任何聲明的基類或?qū)崿F(xiàn)的接口之后。

使用示例:

  //只允許類
    class UsingClass<T> where T : class
    {
        public T Fun()
{
            return default(T);
        }
    }
    //只允許枚舉
    class UsingEnum<T> where T : System.Enum
    {
        public T Fun()
{
            return default(T);
        }
????}
    //只允許類和結(jié)構(gòu)類型
    class UsingClassStruct<T,U> where T : class where U : struct
    {
        public T Fun()
{
            return default(T);
        }
????}
??//歡迎公眾號(hào):DOTNET開發(fā)跳槽,領(lǐng)取海量面試題???

3、結(jié)語(yǔ)

本文簡(jiǎn)單介紹了new和where關(guān)鍵字及它們的案例,new和where關(guān)鍵字都是C#泛型中非常重要的關(guān)鍵字,它們?cè)诖a中起著至關(guān)重要的作用。學(xué)會(huì)正確使用和理解它們的區(qū)別,可以讓我們編寫更加安全、可讀和可維護(hù)的代碼。希望本文對(duì)你有所收獲,歡迎留言和吐槽。

參考:微軟官方文檔文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-424767.html

來(lái)源公眾號(hào):DotNet開發(fā)跳槽

到了這里,關(guān)于深入理解C#泛型:new與where關(guān)鍵字全解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Golang開發(fā)-new關(guān)鍵字

    在Go語(yǔ)言中,new用于創(chuàng)建一個(gè)新的零值對(duì)象,并返回指向該對(duì)象的指針。它是Go語(yǔ)言中用于分配內(nèi)存的一種方式。 new的語(yǔ)法如下: 其中,Type表示要?jiǎng)?chuàng)建的對(duì)象的類型,ptr是指向新對(duì)象的指針。 以下是一個(gè)示例,演示如何使用new創(chuàng)建一個(gè)新的對(duì)象: 在上述

    2024年02月09日
    瀏覽(24)
  • 【C++那些事兒】深入理解C++類與對(duì)象:從概念到實(shí)踐(下)| 再談構(gòu)造函數(shù)(初始化列表)| explicit關(guān)鍵字 | static成員 | 友元

    【C++那些事兒】深入理解C++類與對(duì)象:從概念到實(shí)踐(下)| 再談構(gòu)造函數(shù)(初始化列表)| explicit關(guān)鍵字 | static成員 | 友元

    ?? 江池俊:個(gè)人主頁(yè) ?? 個(gè)人專欄:?C++那些事兒 ?Linux技術(shù)寶典 ?? 此去關(guān)山萬(wàn)里,定不負(fù)云起之望 1.1 構(gòu)造函數(shù)體賦值 在創(chuàng)建對(duì)象時(shí),編譯器通過(guò)調(diào)用構(gòu)造函數(shù),給對(duì)象中各個(gè)成員變量一個(gè)合適的初始值。 雖然上述構(gòu)造函數(shù)調(diào)用之后,對(duì)象中已經(jīng)有了一個(gè)初始值,但是

    2024年03月21日
    瀏覽(24)
  • 前端面試題-js-new關(guān)鍵字-this指向-js事件流-防抖節(jié)流

    前端面試題-js-new關(guān)鍵字-this指向-js事件流-防抖節(jié)流

    1.創(chuàng)建一個(gè)簡(jiǎn)單的空對(duì)象 2.原型的綁定,確定對(duì)象O的原型鏈 3.綁定this對(duì)象為O,傳入?yún)?shù);執(zhí)行Person構(gòu)造函數(shù),進(jìn)行屬性和方法的賦值操作 4.返回結(jié)果 普通函數(shù)的this指向 函數(shù)的this指向有一個(gè)基本的原則,誰(shuí)調(diào)用的函數(shù),函數(shù)的this就指向誰(shuí),否則指向全局 箭頭函數(shù)的this指向

    2024年01月25日
    瀏覽(23)
  • C# -- static 關(guān)鍵字

    C# -- static 關(guān)鍵字

    一、static static ,用于修飾類,字段,屬性,方法,構(gòu)造方法等。被 static 修飾的類稱之為“靜態(tài)類”; 被 static 修飾的成員稱之為“靜態(tài)成員”,被修飾過(guò)的成員分別稱為:靜態(tài)字段,靜態(tài)屬性,靜態(tài)方法,靜態(tài)構(gòu)造方法。 二、靜態(tài)字段 1.概念 被 static

    2023年04月19日
    瀏覽(17)
  • kotlin sealed關(guān)鍵字理解

    Kotlin中的\\\"sealed\\\"用于聲明一個(gè)\\\"密封類\\\"(sealed class)。密封類是一種特殊的抽象類,用于限制可以繼承它的子類。 密封類的主要特點(diǎn)是,它的子類必須定義在與密封類相同的文件中,這樣做可以保證只有有限的類可以繼承密封類。這種限制能夠提供更好的代碼可讀性和

    2024年02月12日
    瀏覽(19)
  • Mysql關(guān)鍵字執(zhí)行順序-深入解析

    Mysql關(guān)鍵字執(zhí)行順序-深入解析

    mysql執(zhí)行順序如下: 這些涉及的sql筆者這里就不一一去寫了。 Mysql會(huì)先執(zhí)行from,然后根據(jù)on去篩選目標(biāo)表,篩選出的結(jié)果再進(jìn)行join或者using,這樣就會(huì)形成一個(gè)臨時(shí)表。然后去執(zhí)行where條件去篩選這個(gè)臨時(shí)表,這樣基本就篩選出需要的數(shù)據(jù)了。然后就可以

    2023年04月22日
    瀏覽(23)
  • C#中的ref關(guān)鍵字

    1、傳遞的是參數(shù)的值(數(shù)據(jù)的副本)而不是原始數(shù)據(jù)本身。 2、函數(shù)內(nèi)部對(duì)值參數(shù)的修改不會(huì)影響到原始數(shù)據(jù)。 3、通常用于傳遞基本數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、布爾值)或不可變對(duì)象(如字符串、元組)。 4、值參數(shù)的傳遞是一種傳值調(diào)用(Call by Value)。 示例代碼 運(yùn)行結(jié)

    2024年02月05日
    瀏覽(25)
  • C#中的`out`關(guān)鍵字

    C# 中的 out 是一個(gè)用來(lái)在方法調(diào)用時(shí)傳遞數(shù)據(jù)的修飾符。它允許你在方法內(nèi)部創(chuàng)建一個(gè)臨時(shí)的變量,用于接收傳遞進(jìn)來(lái)的參數(shù)值,并在方法執(zhí)行完畢后,將該變量的值返回給調(diào)用方法的對(duì)象。out 主要用于那些需要知道方法執(zhí)行結(jié)果的參數(shù)上。 在 C# 中,out

    2024年02月22日
    瀏覽(95)
  • C# const關(guān)鍵字學(xué)習(xí)

    C# const關(guān)鍵字學(xué)習(xí)

    你居然不知道const?今天在做項(xiàng)目的時(shí)候別人問(wèn)我的,我確實(shí)不知道這個(gè),今天我們就來(lái)一起學(xué)習(xí)一下const定義局部變量,這個(gè)對(duì)于常數(shù)變量非常的友好的,可以提高程序的運(yùn)行效率,因?yàn)樗窃诰幾g時(shí)的操作,所以我們必須要學(xué)習(xí)一下,這不就是提

    2024年01月22日
    瀏覽(24)
  • C#中out關(guān)鍵字

    在C#中可以使用out,指定所給的參數(shù)是一個(gè)輸出參數(shù)。out的使用方式與ref相同,都是在函數(shù)定義和函數(shù)調(diào)用中用作參數(shù)的修飾符。 運(yùn)行結(jié)果,如下圖所示: 實(shí)際上,out的執(zhí)行方式與引用參數(shù)幾乎完全一樣,因?yàn)樵诤瘮?shù)執(zhí)行完畢后,該參數(shù)的值將返回給函數(shù)

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包