2017-12-19 7 views
-5

辞書にアルファベットを格納する必要があります。私はそうするには、以下の手順に従っています辞書でアルファベットをCで保存する最も簡単な方法#

static void Main(string[] args) 
{ 
    char[] c = "ABCDFFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 
    int key = 1; 
    Dictionary<int, string> dictionary = new Dictionary<int, string>(); 
    foreach (char value in c) 
    { 
     dictionary.Add(key, value.ToString()); 
     key++; 
    } 
} 

私は最初の配列にして、辞書にアルファベットを保存する必要はありません。私の要件を実装するための他の方法はありますか?

+2

は、[XY問題]のような音(HTTPS ://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。なぜあなたは 'Dictionary'にアルファベットを格納する必要がありますか?最終目標は何ですか? – Igor

+4

なぜ 'foreach'の前に' ToCharArray'を使っている人たちを常時見ていますか?文字列はすでに文字列です。最初に配列に変換する必要はありません。チュートリアルやこれを行うと言っているものがありますか? 'foreach(ABCDEFGのchar c)' –

+0

辞書の目的がアルファベットのn番目の文字を見つけることであれば、単に '(char '(' A ' - 1 + n)'をupper -caseと '(char)( 'a' - 1 + n)'を小文字にします。辞書は必要ありません。 –

答えて

0

これを試してください:あなたはそれに応じて使用できるように

for(char c = 'A'; c <= 'Z'; c++) { 
    int key = c - 'A' + 1; 
    dictionary.Add(key, c.ToString()); 
} 

チャーは、実際には数値型です。

0

私はあなたが、配列を使用したくない理由は正確にはわからないが、それはASCIIに

使用使用することが可能ですキー65から64と手紙(char) 65 Aのために(1に等しくなります) 。

を実行し、この私から= I 65(A)は、90(Z)

1

のcharとintは交換可能であり、あなたはこの

辞書辞書=新しい辞書を()行うことができます=。あなたは、Dictionaryオブジェクトにコレクション初期化子を使用することができ

 for (char c = 'A'; c <= 'Z'; c++) 
      dictionary[c - 64] = c.ToString(); 
0

var i = 0; 
var dictionary = new Dictionary<int, string> 
{ 
    {++i, "A"}, 
    {++i, "B" } 
    // etc. 
}; 
0

私は最初の配列にして、辞書にアルファベットを保存する必要はありません。

それからちょうどあなたの辞書を初期化します。

Dictionary<int, string> alphabet= new Dictionary<int, string>() 
{ 
    { 1, "A" }, 
    { 2, "B" }, 
    { 3, "C" } // etc 
}; 

あなたはASCIIで動的にそれをやってみたかった場合、私はおそらく行いたい:

var values = Enumerable 
    // Returns values 65 to 92 (I think 92) 
    .Range((int)'A', (int)'Z' - (int)'A') 
    // Select that can automatically give me the index of each value 
    .Select((Val, Index) => new { Index, Val }) 
    // Creates a dictionary... 
    .ToDictionary((iv) => iv.Index, (iv) => iv.Val.Tostring()); 
関連する問題