2017-08-08 14 views
2

私はタプル型に対してC#7でのタイプのパターンを使用しようとしています:値タプル型パターン

var lst = new List<object>(); 
lst.Add("foo"); 
lst.Add(("bar","baz")); 

foreach (var item in lst) { 
    switch (item) { 
     case string s: 
      break; 
     case (string, string) t: //Compiler error here 
      break; 
    } 
} 

コンパイラは私に次のエラーを与える:

Invalid expression term 'string' A constant value is expected

どのように解決することができますこの?


N.B.私は使用できることを知っています:

case ValueTuple<string,string> t: 

しかし、私はより良い構文があるのだろうかと思います。

答えて

3

ちょうどcase ValueTuple<string, string> t:を使用してください。

私はこの回答を投稿している間にあなたの質問に同じ解決策を追加しました。さて、case (,):構文のコンパイラサポートを追加するまでは、この解決策に固執する必要があります(これは端的なケースなので、それを待つことはありません)。

1

C#7.0では実装されていないが、patterns proposalで追跡されるさまざまな種類のパターンがあります。これには、再帰的パターンと位置パターンが含まれます。それらのうちのいくつかは、後で7.xポイントリリースの候補となります。

関連する問題