web-dev-qa-db-ja.com

「タプル要素名が推測されます。推測された名前で要素にアクセスするには、言語バージョン7.1以降を使用してください。」

Visual Studio 2017を最新の15.に更新してから今日まで、UWPアプリで正常に機能していた次のコードがあります。

private void Test()
{
    var groups = new List<(Guid key, IList<(string, bool)> items)>();

    var items = new List<(string, bool)>
    {
        ("a", true),
        ("b", false),
        ("c", false)
    };
    var group = (Guid.NewGuid(), items);

    groups.Add(group);
}

エラーメッセージはありませんが、これは出力ウィンドウにあります

タプル要素名「items」が推測されます。推定名で要素にアクセスするには、言語バージョン7.1以降を使用してください。

これを修正する理由と方法はありますか?

40
Jessica

プロジェクト->プロパティ->ビルド->詳細->言語バージョン-> C#最新マイナーバージョン

69
John Stewien

これは確認されたバグで、15.3で導入されました。この修正は、サービスリリース(15.3.2)の一部として出荷されます。

この問題は https://github.com/dotnet/roslyn/issues/21518 で追跡されています

10
Julien Couvreur

これは、C#の breaking change7.1のようです。 (@JulienCouvreurが指摘したように、これは実際にはバグですが、以下の回避策はまだ機能するはずです)。


回避策

name(たとえば、一貫性を保つためにIList<(string, bool)> itemsと同じ名前itemsを使用する)を明示的にitemsに指定してみてください(つまり、リストインスタンス)。

var group = (Guid.NewGuid(), items: items);
8
Justin XL