singキーワードを使用して、C#でエイリアスを定義できることを知っています。
例えば.
using ResponseKey = System.ValueTuple<System.Guid, string, string>;
ただし、値タプルの新しい構文を使用して定義することは可能ですか?
using ResponseKey = (Guid venueId, string contentId, string answer);
この構文は機能していないようです。すべきですか?
これは要求され、GithubのRoslynリポジトリに記録されています 。ただし、そこで混合受信を受け取り、 提案されたレコードタイプ は、この要件を十分にカバーします。
この問題はRoslynリポジトリでクローズされました ただし、現在はC#言語リポジトリで追跡されています 。
using
は次のように定義されます:using identifier = namespace-or-type-name;
( [〜#〜] msdn [〜#〜] )。
(Guid venueId, string contentId, string answer)
は、名前空間でも(完全修飾)型名でもありません。
しかし、私はほとんど推測しています。今までC#7.0が存在することすら知らなかった。
System.Tupleを拡張できます。次のようなものです。
public sealed class ResponseKey : System.Tuple<System.Guid, string, string>
{
public ResponseKey(System.Guid item1, string item2, string item3) : base(item1, item2, item3)
{
}
public System.Guid VenueId => Item1;
public string ContentId => Item2;
public string Answer => Item3;
}