タプルのリストを簡単に初期化するにはどうすればいいですか? 質問する

タプルのリストを簡単に初期化するにはどうすればいいですか? 質問する

私は愛するタプル構造体やクラスを記述しなくても、関連情報をすばやくグループ化できます。これは、非常にローカライズされたコードをリファクタリングするときに非常に便利です。

ただし、それらのリストを初期化するのは少し冗長に思えます。

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].IndextupleList[0].Name

フレームワーク 4.6.2 以下

インストールする必要がありますSystem.ValueTupleNuGet パッケージ マネージャーから。

フレームワーク4.7以上

これはフレームワークに組み込まれています。インストールしないSystem.ValueTupleでください。実際には、削除してbinディレクトリから削除してください。

注: 現実世界では、牛、鶏、飛行機の中から選ぶことはできません。本当に迷ってしまいます。

おすすめ記事