【C#】ValueTuple 用法

C# 7.0 (.NET Framework 4.7)居然來了偷吃步升級版,使用上比 Tuple 更便利且好閱讀。

使用方法:

建立 Tuple & 取值

  • Item 沒給名稱
//建立Tuple
//方法一:使用Tuple建構子
var authorInfo = new ValueTuple<string, DateTime>("AMA", new DateTime(2022, 1, 1));

//方法二:使用Create方法
var authorInfo = ValueTuple.Create("AMA", new DateTime(2022, 1, 1));

//方法三:弱型別(隱含型別)
var authorInfo = ("AMA", new DateTime(2022, 1, 1));

//方法四:強型別
(string, DateTime) authorInfo = ("AMA", new DateTime(2022, 1, 1));

//取Tuple值
Console.Write(authorInfo.Item1);//AMA
Console.Write(authorInfo.Item2);//2022/01/01
  • Item 給予名稱
//方法一:使用小括號,等號左邊給予item名稱
(string name, DateTime birth) authorInfo = ("AMA", new DateTime(2022, 1, 1));

//方法二:使用小括號,等號右邊給予item名稱
var authorInfo = (name: "AMA", birth: new DateTime(2022, 1, 1));

////取Tuple值
////還是可以用Item取值
Console.Write(authorInfo.Item1);//AMA
Console.Write(authorInfo.Item2);//2022/01/01
////用名稱取值
Console.Write(authorInfo.name);//AMA
Console.Write(authorInfo.birth);//2022/01/01
  • 用於 method
//method 回傳型態沒名稱,取資料時可自行給定名稱
var (name, birth) = GetAuthorInfo();
//tuple type
private (string, DateTime) GetAuthorInfo()
{
    return ("AMA", new DateTime(2022, 1, 1));//tuple literal
}

//不需要的成員可用棄元(Discards)
var (name, _) = GetAuthorInfo();

參考資料:
https://learn.microsoft.com/en-us/archive/msdn-magazine/2017/august/essential-net-csharp-7-0-tuples-explained

分類: C#

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *