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

淺析C# 9.0 新特性之 Lambda 棄元參數(shù)

 更新時(shí)間:2020年06月30日 09:44:53   作者:精致碼農(nóng)  
這篇文章主要介紹了C# 9.0 新特性之 Lambda 棄元參數(shù)的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),想學(xué)習(xí)c#的朋友可以了解下

大家好,這是 C# 9.0 新特性短系列的第 5 篇文章。

棄元(Discards) 是在 C# 7.0 的時(shí)候開始支持的,它是一種人為丟棄不使用的臨時(shí)虛擬變量。語法上它是用來賦值的,但它卻不被分配存儲(chǔ)空間,即沒有值,所以不能從中讀取值。棄元用 _(下劃線) 表示,下劃線是一個(gè)關(guān)鍵字,只能賦值,不能讀取,例如:

在 C# 7.0 中,棄元的使用場(chǎng)景主要有下面四種:

  • 元組和對(duì)象的解構(gòu)
  • 使用 is 和 switch 的模式匹配
  • 對(duì)具有 out 參數(shù)的方法的調(diào)用
  • 作用域內(nèi)獨(dú)立使用場(chǎng)景

針對(duì)這幾個(gè)場(chǎng)景,用下面的幾段代碼演示一下。

場(chǎng)景一:元組/對(duì)象的解構(gòu)

var tuple = (1, 2, 3, 4, 5);
(_, _, _, _, var fifth) = tuple;

場(chǎng)景二:使用 is/switch 的模式匹配

var obj = CultureInfo.CurrentCulture.DateTimeFormat;

switch (obj)
{
  case IFormatProvider fmt:
    Console.WriteLine($"{fmt} object");
    break;
  case null:
    Console.Write("A null object reference");
    break;
  case object _:
    Console.WriteLine("Some object type without format information");
    break;
}

if (obj is object _)
{
  ...
}

場(chǎng)景三:對(duì)具有 out 參數(shù)的方法的調(diào)用

var point = new Point(10, 10);
// 只要 x, 不關(guān)心 y
point.GetCoordinates(out int x, out _);

場(chǎng)景四:作用域內(nèi)獨(dú)立使用場(chǎng)景

void Test(Dto dto)
{
  _ = dto ?? throw new ArgumentNullException(nameof(dto));
}

理解了棄元,也了解了棄元的四種使用場(chǎng)景,那么對(duì)下面這個(gè) C# 9.0 新支持的棄元使用場(chǎng)景就容易理解了。

C# 9.0 對(duì)棄元增加了一種場(chǎng)景支持:Lambda 參數(shù),也包括匿名方法參數(shù)。示例:

// C# 9 之前
Func<int, int, int> zero = (a, b) => 0;
Func<int, int, int> func = delegate (int a, int b) { return 0; };

// C# 9
Func<int, int, int> zero = (_, _) => 0;
Func<int, int, int> func = delegate (int _, int _) { return 0; };

在 C# 9 之前,即便不使用的 Lambda 參數(shù)也需要給它命名。C# 9 支持棄元參數(shù)一方面簡(jiǎn)化了命名,另一方面也節(jié)省了內(nèi)存分配。更重要的是它使得編程的意圖更明確,讓人一看就知道這個(gè)參數(shù)是不用的,增強(qiáng)了代碼的可讀性和可維護(hù)性。

參考:

[Discards - C# Guide] http://dwz.date/bpuV

以上就是淺析C# 9.0 新特性之 Lambda 棄元參數(shù)的詳細(xì)內(nèi)容,更多關(guān)于c# Lambda 棄元參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)在購物車系統(tǒng)中生成不重復(fù)訂單號(hào)的方法

    C#實(shí)現(xiàn)在購物車系統(tǒng)中生成不重復(fù)訂單號(hào)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)在購物車系統(tǒng)中生成不重復(fù)訂單號(hào)的方法,涉及C#中時(shí)間與字符串操作的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • C#語言中條件與&&與條件或||的區(qū)別

    C#語言中條件與&&與條件或||的區(qū)別

    這篇文章主要介紹了&&:邏輯與,前后條件同時(shí)滿足表達(dá)式為真 ||:邏輯或,前后條件只要有一個(gè)滿足表達(dá)式為真,下面結(jié)合案例給大家介紹,需要的朋友可以參考下
    2015-07-07
  • c#定時(shí)器使用示例詳解

    c#定時(shí)器使用示例詳解

    這篇文章主要介紹了c#定時(shí)器的使用示例,大家參考使用吧
    2014-01-01
  • C#中#define后面只加一個(gè)參數(shù)的解釋

    C#中#define后面只加一個(gè)參數(shù)的解釋

    今天小編就為大家分享一篇關(guān)于C#中#define后面只加一個(gè)參數(shù)的解釋,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • .NET中的Timer類型用法詳解

    .NET中的Timer類型用法詳解

    這篇文章主要介紹了.NET中的Timer類型用法,較為詳細(xì)的分析了Timer類型在各種環(huán)境下的用法,需要的朋友可以參考下
    2014-08-08
  • C#中out與ref作用區(qū)別示例分析

    C#中out與ref作用區(qū)別示例分析

    這篇文章主要為大家介紹了C#中out與ref作用區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • C#實(shí)現(xiàn)QQ聊天窗口

    C#實(shí)現(xiàn)QQ聊天窗口

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)QQ聊天窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 探討c#中的unchecked是什么意思,起什么作用?

    探討c#中的unchecked是什么意思,起什么作用?

    本篇文章是對(duì)c#中的unchecked進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C# Bitmap圖像處理加速的實(shí)現(xiàn)

    C# Bitmap圖像處理加速的實(shí)現(xiàn)

    本文主要介紹了C# Bitmap圖像處理加速的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用VS2010 C#開發(fā)ActiveX控件(上)

    使用VS2010 C#開發(fā)ActiveX控件(上)

    最近做讀卡器的B/S應(yīng)用程序開發(fā),由于讀卡器廠商提供的手冊(cè)都是C/S版本的,而且只有一個(gè)原始的Dll包,并沒有web版的,那么就只好自己動(dòng)手,豐衣足食了
    2011-05-05

最新評(píng)論

房山区| 喜德县| 来安县| 泰顺县| 阳泉市| 威远县| 普兰店市| 星座| 雷山县| 东丰县| 福泉市| 吉林省| 定日县| 三门县| 岗巴县| 乌兰察布市| 秦安县| 荣昌县| 奎屯市| 阜城县| 安达市| 五莲县| 宽城| 容城县| 辽宁省| 灯塔市| 化州市| 理塘县| 雷州市| 应城市| 湘阴县| 南召县| 枝江市| 马鞍山市| 乐平市| 赣榆县| 牙克石市| 兰西县| 屯留县| 弥勒县| 平原县|