在c#中将字母存储在字典中的最简单方法

时间:2017-12-19 19:03:18

标签: c# .net

我需要将字母存储在字典中。我已按照以下步骤执行此操作:

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

我不想先将字母存储在数组中,然后存储在字典中。是否有其他方式可以实现我的要求?

5 个答案:

答案 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.
};