rksoftware

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

C# 2.0 以降の新機能の確認 - C# 7.1 - ジェネリックによるパターン マッチング

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

ジェネリックによるパターン マッチング

 https://docs.microsoft.com/ja-jp/dotnet/csharp/pattern-matching
 ※リンクは掲載していますが、この機能についての言及はありません。言及のあるページは将来なくなりそうなページのため掲載していません。
 ジェネリック型の引数に対してのパターンマッチングが可能になりました。以前は、下記の例では、Match メソッドの引数 a に対するパターンマッチングはコンパイルエラーでした。

static async Task Main(string[] args)
{
static void Main(string[] args)
{
    Console.WriteLine(Match("test"));   // string
}

static string Match<T>(T a)
{
    switch (a)
    {
        case int v:
            return "int";
        case string v:
            return "string";
        default:
            return "default";
    }
}