私はいくつかのファイルをピックアップして辞書に追加するディレクトリに行きます。forループの位置に基づいて辞書のキーを作る
ループで初めてキーはA、2回目のBなどでなければなりません。Afer 26/Z数字は異なる文字を表し、33からは小文字のaから小文字のqで始まります。
if == 1であればKeyは 'A'などと言っても大したif文はありません。どうすればこのコードをきれいに保つことができますか?
int index = 0;
foreach (...)
{
...
string key = MapIndexToKey(index);
dictionary[key] = value;
index++;
}
...
// Keys as per comments
private static readonly List<string> Keys =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq"
.Select(x => x.ToString())
.ToList();
// This doesn't really need to be a separate method at the moment, but
// it means it's flexible for future expansion.
private static string MapIndexToKey(int index)
{
return Keys[index];
}
EDIT:あなたはちょうどあなたが、その後、いくつかのマッピング機能を持っているところのインデックスを維持する必要があるよう
私はそれの要点を得るが、一度私はmyDicionary.Add(generateKey、myvalue)を行うでしょう。 – Jon
@Jon:なぜインデクサーを使って 'Add'するのが好きですか? –
1行のコード?私はちょうど次の問題を発見しました。0-26は大文字で、26-32は奇妙な文字で、33-49は小文字ですが、char/intキャスティングは機能しません。 – Jon