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

C#12新功能主構(gòu)造函數(shù):實(shí)用,簡(jiǎn)潔利落

這篇具有很好參考價(jià)值的文章主要介紹了C#12新功能主構(gòu)造函數(shù):實(shí)用,簡(jiǎn)潔利落。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

大家還記得記錄(record)類型嗎?記錄類型很像一個(gè)構(gòu)造函數(shù),那么類可以像record類型一樣使用嗎?C#12就推出了這樣的功能,這就是主構(gòu)造函數(shù)。“現(xiàn)在可以在任何 classstruct 中創(chuàng)建主構(gòu)造函數(shù)。主構(gòu)造函數(shù)不再局限于 record 類型。主構(gòu)造函數(shù)參數(shù)都在類的整個(gè)主體的范圍內(nèi)。為了確保顯式分配所有主構(gòu)造函數(shù)參數(shù),所有顯式聲明的構(gòu)造函數(shù)都必須使用 this() 語(yǔ)法調(diào)用主構(gòu)造函數(shù)。將主構(gòu)造函數(shù)添加到 class 可防止編譯器聲明隱式無(wú)參數(shù)構(gòu)造函數(shù)。在struct中,隱式無(wú)參數(shù)構(gòu)造函數(shù)初始化所有字段,包括 0 位模式的主構(gòu)造函數(shù)參數(shù)?!毕旅鎸⒔榻B主構(gòu)造函數(shù)的語(yǔ)法和相關(guān)使用場(chǎng)景。

語(yǔ)法

當(dāng)然要使用主構(gòu)造函數(shù)必須是運(yùn)行 .NET 8 或更高版本,包括 C# 12 或更高版本編譯器。它的語(yǔ)法跟record類似。如下:

class?ClassName(int?a,?string?b)
{
    // 構(gòu)造函數(shù)體
}

在這里,int astring b是主構(gòu)造函數(shù)的參數(shù)。注意,參數(shù)列表直接跟在類名之后,使用括號(hào)括起。如果主構(gòu)造函數(shù)不需要額外邏輯,甚至可以省略顯式構(gòu)造函數(shù)體。

同樣,結(jié)構(gòu)體也可以用類似的方式定義主構(gòu)造函數(shù),如下:

struct StructName(int a, string b)
{
    // 構(gòu)造函數(shù)體
}

初始化屬性

先來(lái)使用一下主構(gòu)造函數(shù)初始化屬性的案例。如下:

    public readonly struct calculate(double a, double b)
    {
        public readonly double  Add{ get; } =a+b;
        public readonly double Sub { get; } = a - b;
    }

以上代碼演示了用于初始化計(jì)算的只讀屬性的主構(gòu)造函數(shù)。 Add和 Sub的字段初始值設(shè)定項(xiàng)使用主構(gòu)造函數(shù)參數(shù)。主構(gòu)造函數(shù)參數(shù)不會(huì)在結(jié)構(gòu)中的其他任何位置使用。前面的結(jié)構(gòu)就像編寫了以下代碼一樣:

   public readonly struct calculate
    {
        public readonly double  Add{ get; };
        public readonly double Sub { get; } ;
????????public calculate(double a, double b)
????????{
????????  Add= =a+b;
????????}
    }

從上面的代碼可以看出,第一種寫法比第二種寫法更簡(jiǎn)潔明了,可讀性強(qiáng)。

依賴關(guān)系注入

依賴注入也是比較常用的語(yǔ)法,尤其是通過(guò)構(gòu)造函數(shù)進(jìn)行依賴關(guān)系的注入,下面我們通過(guò)主函數(shù)的方式實(shí)現(xiàn)控制臺(tái)中的構(gòu)造函數(shù)注入。代碼如下:

    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController(ILogger<WeatherForecastController> logger) : ControllerBase
    {
        private readonly ILogger<WeatherForecastController> _logger=logger;
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            logger.LogDebug("測(cè)試!");
            return null;
        }
    }

以上代碼是改造asp.net?core最小API的默認(rèn)項(xiàng)目案例測(cè)試主構(gòu)造函數(shù),這樣寫的話代碼簡(jiǎn)潔多了。

結(jié)語(yǔ)

主構(gòu)造函數(shù)是 C# 12 引入的一個(gè)比較實(shí)用的新特性,為我們提供了更簡(jiǎn)潔和靈活的方式來(lái)定義類和結(jié)構(gòu)體的構(gòu)造函數(shù)。這一新特性將在日常開(kāi)發(fā)中提高代碼的可讀性和開(kāi)發(fā)效率。本文講述了C#12的新特性主構(gòu)造函數(shù)的語(yǔ)法以及依賴關(guān)系注入和初始化屬性的案例,當(dāng)然主構(gòu)造函數(shù)還可以創(chuàng)建可變狀態(tài)、初始化基類等,詳情可以查看官網(wǎng)。大家覺(jué)得C#12的新特主構(gòu)造函數(shù)實(shí)用嗎?歡迎留言討論或者吐槽。

參考:learn.microsoft.com/zh-cn/dotnet/csharp/whats-new/tutorials/primary-constructors文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-777112.html


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

到了這里,關(guān)于C#12新功能主構(gòu)造函數(shù):實(shí)用,簡(jiǎ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)文章

  • 12、【裝飾器模式】動(dòng)態(tài)地為對(duì)象添加新功能

    12、【裝飾器模式】動(dòng)態(tài)地為對(duì)象添加新功能

    你好,我是程序員雪球。 今天我們來(lái)聊聊 23 種設(shè)計(jì)模式中,一種常見(jiàn)的結(jié)構(gòu)型模式,裝飾器模式。聊聊它的設(shè)計(jì)思想、實(shí)現(xiàn)原理,應(yīng)用場(chǎng)景,以及如何使用。 ? ? 裝飾器模式(Decorator Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,它允許在不改變?cè)碱惖幕A(chǔ)上,動(dòng)態(tài)地為對(duì)象添加新的

    2024年04月29日
    瀏覽(23)
  • 今天新發(fā)布的nova12手機(jī)都有哪些新功能?

    今天新發(fā)布的nova12手機(jī)都有哪些新功能?

    12月26日,華為召開(kāi)問(wèn)界M9及華為冬季全場(chǎng)景發(fā)布會(huì),正式推出了華為nova 12系列新品,并宣布新的三款nova產(chǎn)品正式加入先鋒計(jì)劃~我們一起看下這次華為nova12系列有那些看點(diǎn)亮點(diǎn)呢?首先這次nova12 ultra 配置很高啊,智能可變光圈,雙向北斗衛(wèi)星消息,智感支付、智能快充10分鐘快

    2024年02月03日
    瀏覽(28)
  • C++11 新功能

    C++11 新功能

    在2003年C++標(biāo)準(zhǔn)委員會(huì)曾經(jīng)提交了一份技術(shù)勘誤表(簡(jiǎn)稱TC1),使得C++03這個(gè)名字已經(jīng)取代了C++98稱為 C++11之前的最新C++標(biāo)準(zhǔn)名稱。不過(guò)由于TC1主要是對(duì)C++98標(biāo)準(zhǔn)中的漏洞進(jìn)行修復(fù),語(yǔ)言的核心部分則沒(méi) 有改動(dòng),因此人們習(xí)慣性的把兩個(gè)標(biāo)準(zhǔn)合并稱為C++98/03標(biāo)準(zhǔn)。從C++0x到C++11,C+

    2023年04月12日
    瀏覽(29)
  • Java 20 新功能介紹

    Java 20 共帶來(lái) 7 個(gè)新特性功能 ,其中三個(gè)是孵化提案,孵化也就是說(shuō)尚在征求意見(jiàn)階段,未來(lái)可能會(huì)刪除此功能。 JEP 描述 分類 429 作用域值(孵化器) Project Loom,Java 開(kāi)發(fā)相關(guān) 432 Record 模式匹配(第二次預(yù)覽) Project Amber,新的語(yǔ)言特性 433 switch 的模式匹配(第四次預(yù)覽)

    2024年02月03日
    瀏覽(26)
  • Midjourney新功能:角色參照指南

    基本概念 角色參照(Character Reference) :這個(gè)功能允許用戶在不同的圖像生成中保持給定參照角色的一致性。 適用模型 :適用于Midjourney V6和Niji6型號(hào)。 功能亮點(diǎn) 跨風(fēng)格一致性 :可以在不同風(fēng)格(如動(dòng)漫風(fēng)、寫實(shí)風(fēng))中保持角色特征一致。 面部、著裝、發(fā)型調(diào)控 :用戶可以

    2024年04月10日
    瀏覽(43)
  • 【C++】C++11 -- 新功能

    在C++11之前一個(gè)類有6個(gè)默認(rèn)成員函數(shù),在C++11標(biāo)準(zhǔn)中又新增了兩個(gè)默認(rèn)成員函數(shù),分別是移動(dòng)構(gòu)造函數(shù)和移動(dòng)賦值函數(shù) 默認(rèn)移動(dòng)構(gòu)造和移動(dòng)賦值生成的條件 移動(dòng)構(gòu)造函數(shù)的生成條件:沒(méi)有自己實(shí)現(xiàn)移動(dòng)構(gòu)造函數(shù),并且沒(méi)有自己實(shí)現(xiàn)析構(gòu)函數(shù),拷貝構(gòu)造函數(shù)和拷貝賦值函數(shù) 移

    2024年02月17日
    瀏覽(52)
  • TypeScript 5.1發(fā)布,新功能更新

    TypeScript 5.1發(fā)布,新功能更新

    1:返回類型增加undefined 這里設(shè)置了一個(gè)別名 fun,當(dāng)時(shí)使用它的時(shí)候,我們必須顯示返回一個(gè) undefined 。 現(xiàn)在你可以直接設(shè)置返回類型: 而不僅限于 void any 。 4.3版本 :? 5.1版本 :? 2:getter可以設(shè)置和 setter 的不相關(guān)類型 在之前版本 ,get 返回類型應(yīng)該為 set 的子類型,如

    2024年02月09日
    瀏覽(24)
  • 三星泄露微軟 Copilot 新功能:用自然語(yǔ)言操控各種功能

    三星泄露微軟 Copilot 新功能:用自然語(yǔ)言操控各種功能

    3 月 11 日消息,微軟計(jì)劃本月晚些時(shí)候發(fā)布新款 Surface 電腦和適用于?Windows 11?的 Copilot 新功能,但三星似乎等不及了,在其即將推出的 Galaxy Book4 系列產(chǎn)品宣傳材料中泄露了一些即將到來(lái)的 Copilot 功能。 三星官網(wǎng)上發(fā)布的圖片證實(shí)了此前關(guān)于微軟正為其人工智能助手 Copilo

    2024年04月09日
    瀏覽(30)
  • SOLIDWORKS 2023新功能揭秘(一):3D CAD功能的十大更新

    SolidWorks 3D CAD ?軟件擁有設(shè)計(jì)、模擬、成本估算、可制造性檢查、CAM、可持續(xù)設(shè)計(jì)和數(shù)據(jù)管理等功能,同時(shí)還包含適用于鈑金,焊件,曲面,模具,產(chǎn)品配置,DFM和CAM的專業(yè)工具,支持ECAD/MCAD協(xié)作,復(fù)雜的零部件庫(kù)以及高級(jí)真實(shí)感渲染。更重要的是具有結(jié)構(gòu)和運(yùn)動(dòng)分析功能,

    2024年02月05日
    瀏覽(18)
  • Microsoft Releases .NET 7新功能

    Microsoft Releases .NET 7新功能

    Microsoft Visual Studio是一種統(tǒng)一的開(kāi)發(fā)體驗(yàn),使開(kāi)發(fā)人員能夠跨web、云和設(shè)備創(chuàng)建多層應(yīng)用程序。11月8日,微軟發(fā)布了該強(qiáng)大開(kāi)發(fā)環(huán)境的下一版本:Visual Studio 2022 17.4版。 除了修復(fù)許多頂級(jí)報(bào)告的bug之外,17.4版還包括了許多基于開(kāi)發(fā)者社區(qū)建議的新功能,包括: Visual Studio的本

    2024年02月06日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包