私は愛するタプル構造体やクラスを記述しなくても、関連情報をすばやくグループ化できます。これは、非常にローカライズされたコードをリファクタリングするときに非常に便利です。
ただし、それらのリストを初期化するのは少し冗長に思えます。
var tupleList = new List<Tuple<int, string>>
{
Tuple.Create( 1, "cow" ),
Tuple.Create( 5, "chickens" ),
Tuple.Create( 1, "airplane" )
};
もっと良い方法はないでしょうか?私は次のような解決策を望みます辞書初期化子。
Dictionary<int, string> students = new Dictionary<int, string>()
{
{ 111, "bleh" },
{ 112, "bloeh" },
{ 113, "blah" }
};
同様の構文を使用することはできませんか?
ベストアンサー1
c# 7.0 では次のことが可能になります:
var tupleList = new List<(int, string)>
{
(1, "cow"),
(5, "chickens"),
(1, "airplane")
};
ではなく配列だけが必要な場合はList
、次のようにします。
var tupleList = new(int, string)[]
{
(1, "cow"),
(5, "chickens"),
(1, "airplane")
};
「Item1」と「Item2」が気に入らない場合は、次のようにします。
var tupleList = new List<(int Index, string Name)>
{
(1, "cow"),
(5, "chickens"),
(1, "airplane")
};
または配列の場合:
var tupleList = new (int Index, string Name)[]
{
(1, "cow"),
(5, "chickens"),
(1, "airplane")
};
これにより、次のことが可能になりますtupleList[0].Index
。tupleList[0].Name
フレームワーク 4.6.2 以下
インストールする必要がありますSystem.ValueTuple
NuGet パッケージ マネージャーから。
フレームワーク4.7以上
これはフレームワークに組み込まれています。インストールしないSystem.ValueTuple
でください。実際には、削除してbinディレクトリから削除してください。
注: 現実世界では、牛、鶏、飛行機の中から選ぶことはできません。本当に迷ってしまいます。