我需要将字母存储在字典中。我已按照以下步骤执行此操作:
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++;
}
}
我不想先将字母存储在数组中,然后存储在字典中。是否有其他方式可以实现我的要求?
答案 0 :(得分:2)
试试这个:
for(char c = 'A'; c <= 'Z'; c++) {
int key = c - 'A' + 1;
dictionary.Add(key, c.ToString());
}
Char实际上是一种数字类型,因此您可以相应地使用它。
答案 1 :(得分:2)
char和int是可以互换的,你可以这样做
字典词典=新词典();
for (char c = 'A'; c <= 'Z'; c++)
dictionary[c - 64] = c.ToString();
答案 2 :(得分:1)
我不想先将字母表存储在数组中,然后再存储在字典中。
然后只需初始化你的词典:
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());
答案 3 :(得分:0)
我不确定你为什么不想使用数组,但是可以使用ASCII
使用密钥65 - 64(等于1)和字母(char) 65
A。
从i = 65(A)运行到i = 90(Z)
答案 4 :(得分:0)
您可以在Dictionary对象上使用集合初始值设定项:
var i = 0;
var dictionary = new Dictionary<int, string>
{
{++i, "A"},
{++i, "B" }
// etc.
};