2016-07-08 14 views
0

forループを使用してC#で複数の配列/辞書を作成しようとしています。私はそれらを個別に宣言できますが、それはきれいではありません。私は繰り返し配列を作成するには、名前の配列に格納された名前を使用しようとしていますforループを使用してC#で複数の配列/辞書を作成しようとしています

string[] names = ["dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"]; 

for (int i = 0; i <= names.Length; i++) 
{ 
    string building = names[i]; 
    Dictionary<long, int> building = new Dictionary<long, int>(); 
} 

は、ここに私のコードです。既に宣言されているように、Visual Studioは「ビルド」を受け入れません。どんな提案も大歓迎です。ありがとうございました!

+1

他のデータに基づいてローカル変数の名前を決定したいですか?それは可能ではありません。なぜ変数名が重要か?あなたは辞書で何をしていますか? –

答えて

5

C#では、動的に名前が付けられたローカル変数を作成する方法はありません。

おそらく辞書の辞書が必要ですか?

string[] names = ["dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"]; 
var buildings = new Dictionary<string,Dictionary<long, int>>(); 

for (int i = 0; i <= names.Length; i++) { 
     buildings[names[i]] = new Dictionary<long, int>(); 
} 

//... meanwhile, at the Hall of Justice ... 

// reference the dictionary by key string 
buildings["dSSB"][1234L] = 5678; 
+1

@D Stanley "...一方、正義のホールで..."ハハハは私を笑わせました:)あなたの答えをありがとう。 JSONファイルを作成するためにシリアル化できるデータ構造を作成しようとしています。 – Johnathan

1

あなたは単に辞書を作るしようとしている場合は、この

 string[] names = {"dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB"}; 
     Dictionary<string, Dictionary<long, int>> buildings = new Dictionary<string, Dictionary<long, int>>(); 
     for (int i = 0; i <= names.Length -1; i++) 
     { 
      buildings[names[i]] = new Dictionary<long, int>(); 
      buildings[names[i]].Add(5L, 55); 
     } 

     //Here you can get the needed dictionary from the 'parent' dictionary by key 
     var neededDictionary = buildings["dSSB"]; 

乾杯

+0

ありがとうございました!私は疑問に思っていた:なぜ "辞書"の代わりに "var"を使用するのですか?利点はありますか? – Johnathan

+1

利点がありません、それはあまり読みにくいので、あまりにも悪い練習と考えられています。 CLRは、コンパイル時に変数の型を解決します。詳細はhttps://msdn.microsoft.com/en-us/library/bb383973.aspx P.S.をご覧ください。遅い答え申し訳ありません –

1

のようにそれを試して、その中にものを置くことができます。だから、あなたは

 Dictionary<int, string> buildings = new Dictionary<int, string>(); 

     string[] names = { "dSSB", "dGEN", "dLYM", "dLUD", "dGGC", "dMAC", "dMMB" }; 
     for (int i = 0; i < names.Length; i++) 
     { 
      buildings.Add(i, names[i]); 
     } 

     foreach (KeyValuePair<int, string> building in buildings) 
     { 
      Console.WriteLine(building); 
     } 
+0

だから、 "建物"は、一般的な変数は、キーを表す? – Johnathan

+0

いいえ、この例ではvarキーワードを使用してはいけません。 「建物」はKeyValuePairです。私はそれを修正できると思う。 –

+1

"var"は欲求不満な言葉です。調べる。それは、割り当てられている型に強く型を入れるための省略形です。 var chicken = new Chicken( は と同義です。チキンチキン= new Chicken(); –

関連する問題