15

私は Visual Studio 2017 RC をSystem.ValueTuple使用しており、新しい c# 7.0 タプルの使用を有効にするパッケージをインストールしましたが、この特定のケースでは機能させることができません:

ご覧のとおり、最初の方法には赤い波線がなく、機能しています。しかしo is (string, Color)、関係のないエラーで失敗します:

新しいタプルをこのように使用できないでしょうか? それとも、パッケージの現在の状態だけですか? 現時点では最新バージョンの 4.3.0 に更新しました。この MSDN の投稿を読みましたが、そのような使用法は見つかりませんでした。

4

2 に答える 2

10

Roslyn には、パターン マッチングでタプルを使用するとエラー発生することを確認するテストが含まれているため (何も説明しないこの PRに追加されています)、これは現在予期されている動作のようです。その理由が何なのか、または C# 7.0 の最終バージョンがこのように動作する予定があるのか​​どうかはわかりません。それは確かに私が働くことを期待するものです。

于 2016-11-27T18:56:57.467 に答える
7

一部のパターン マッチング機能は、C# 7 リリースから削除されました。これには、タプルのパターン マッチングが含まれます。これは引き出され、将来の枝に入れられます。( https://github.com/dotnet/roslyn/issues/10866 )

これは、reddit ポスター wreckedadvent によって効果的に説明されている、より高度な種類のパターン マッチングが C# 7 で利用できないことを意味します。

  • 位置パターン (例: p is Person("Mickey", *))、プロパティ パターン (例: p is Person {FirstName is "Mickey"})、タプル パターン、ワイルドカード * などの再帰パターン形式。

ソース: https://www.infoq.com/news/2016/05/csharp7-pattern-matching-removed

更新:型テスト(int, int)はタプル パターンとして解釈できます。たとえば、型テストを実行し、結果を変数にバインドする場合。したがって、型テストはタプル パターンに関係しています。たとえば(int x, int y)、型テストやタプル パターンなどです。github でパターン マッチングの議論を参照してください: https://github.com/dotnet/roslyn/issues/11744

于 2016-11-27T19:06:27.677 に答える