反向开关案例说明

用户4451265

我想反转开关块中的代码,而不是自己动手(对我来说似乎没有意义),例如:

{            string name = Console.ReadLine();
             string s = null;
             for (int i = 0; i < name.Length; i++)
            {
                switch (name[i])
                {
                    case 'a':
                        s += '1';break;
                    case 'q':
                        s += '2'; break;
                 }
            }
}

如何使它变成这样:

                    case '1':
                        s += 'a';break;
                    case '2':
                        s += 'q'; break;

我的代码为每个字符包含30多个语句。

帕特里克·霍夫曼

Dictionary<char, char>为映射创建一个(实际上,出于性能原因和易用性,您可以创建两个),或者为带有自定义对象的简单列表类型(如List<Tuple<char, char>>)创建一个。您可以制定一种使添加变得更容易的方法。注意,key并且val必须唯一!

private void Add(char key, char val, Dictionary<char, char> dictionary, Dictionary<char, char> reverseDictionary)
{
    dictionary.Add(key, val);
    reverseDictionary.Add(val, key);
}

然后使用:

Dictionary<char, char> dictionary = new Dictionary<char, char>();
Dictionary<char, char> reverseDictionary = new Dictionary<char, char>();

this.Add('a', '1', dictionary, reverseDictionary);

...

char outputChar;
if (dictionary.TryGetValue(inputChar, out outputChar))
{
    // use outputChar
}

相反:

char outputChar;
if (reverseDictionary.TryGetValue(inputChar, out outputChar))
{
    // use outputChar
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章