欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析C# 9.0 新特性之 Lambda 棄元參數(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 的時候開始支持的,它是一種人為丟棄不使用的臨時虛擬變量。語法上它是用來賦值的,但它卻不被分配存儲空間,即沒有值,所以不能從中讀取值。棄元用 _(下劃線) 表示,下劃線是一個關(guān)鍵字,只能賦值,不能讀取,例如:

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

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

針對這幾個場景,用下面的幾段代碼演示一下。

場景一:元組/對象的解構(gòu)

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

場景二:使用 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 _)
{
  ...
}

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

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

場景四:作用域內(nèi)獨立使用場景

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

理解了棄元,也了解了棄元的四種使用場景,那么對下面這個 C# 9.0 新支持的棄元使用場景就容易理解了。

C# 9.0 對棄元增加了一種場景支持: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èi)存分配。更重要的是它使得編程的意圖更明確,讓人一看就知道這個參數(shù)是不用的,增強了代碼的可讀性和可維護(hù)性。

參考:

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

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

相關(guān)文章

  • C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫

    C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫

    這篇文章介紹了C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#使用XML序列化操作菜單的方法

    C#使用XML序列化操作菜單的方法

    這篇文章主要介紹了C#使用XML序列化操作菜單的方法,是基于上一篇遞歸讀取XML菜單數(shù)據(jù)的改進(jìn)方法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • C#實現(xiàn)單例模式的幾種方法總結(jié)

    C#實現(xiàn)單例模式的幾種方法總結(jié)

    這篇文章主要介紹了C#實現(xiàn)單例模式的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Unity UGUI的Outline描邊組件的介紹使用示例

    Unity UGUI的Outline描邊組件的介紹使用示例

    這篇文章主要介紹了Unity UGUI的Outline描邊組件的介紹使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • linux操作系統(tǒng)安裝MONO執(zhí)行C#程序的詳解步驟

    linux操作系統(tǒng)安裝MONO執(zhí)行C#程序的詳解步驟

    這篇文章主要介紹了linux操作系統(tǒng)安裝MONO執(zhí)行C#程序詳解步驟,有需要的可以參考一下
    2013-12-12
  • C#延時函數(shù)的使用說明

    C#延時函數(shù)的使用說明

    這篇文章主要介紹了C#延時函數(shù)的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • C#實現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    C#實現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)SMTP服務(wù)發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • c#入門之類型轉(zhuǎn)換詳解

    c#入門之類型轉(zhuǎn)換詳解

    這篇文章主要介紹了c#的類型轉(zhuǎn)換詳解,類型轉(zhuǎn)換分兩種形式:隱式轉(zhuǎn)換、顯示轉(zhuǎn)換,下面是詳細(xì)介紹
    2014-04-04
  • 談C# using的用法與好處

    談C# using的用法與好處

    這篇文章主要為大家詳細(xì)介紹了C# using的用法與好處,具體分析了using指令調(diào)用的Dispose()方法,感興趣的朋友可以參考一下
    2016-05-05
  • c# 顏色選擇控件的實現(xiàn)代碼

    c# 顏色選擇控件的實現(xiàn)代碼

    這篇文章主要介紹了c# 顏色選擇控件的實現(xiàn)代碼,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04

最新評論