rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 7.0 - 分解 (Deconstruction)

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

分解 (Deconstruction)

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/value-tuples#tuple-assignment-and-deconstruction
 タプルを"分解"し項目を展開した状態で、変数を作成できる。

static void Main(string[] args)
{
    // 分解していない書き方
    {
        var tuple = Method();
        Console.WriteLine($"{tuple.text}, {tuple.length}");     // text, 4
    }
    // 以降、分解している書き方
    {
        var (text, length) = Method();
        Console.WriteLine($"{text}, {length}");                 // text, 4
    }
    {
        (var text, var length) = Method();
        Console.WriteLine($"{text}, {length}");                 // text, 4
    }
    {
        (string text, int length) = Method();
        Console.WriteLine($"{text}, {length}");                 // text, 4
    }
}

static (string text, int length) Method()
{
    string text = "text";
    return (text: text, length: text.Length);
}