1. ホーム
  2. c#

[解決済み] タプルのリストを簡単に初期化する方法は?

2022-03-15 14:58:51

質問

好きなもの アップル . これを使えば、構造体やクラスを書かなくても、関連する情報をすばやくグループ化することができます。これは、非常にローカライズされたコードをリファクタリングする際に非常に便利です。

しかし、それらのリストを初期化するのは少し冗長な気がします。

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" }
};

似たような構文にできないか?

どのように解決するのですか?

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

Framework 4.6.2以下

をインストールする必要があります。 System.ValueTuple をNugetパッケージマネージャからダウンロードします。

フレームワーク4.7以上

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

注:現実には、牛、鶏、飛行機のうちどれかを選ぶことはできないでしょう。本当に悩むだろうね。