我想反转开关块中的代码,而不是自己动手(对我来说似乎没有意义),例如:
{ 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] 删除。
我来说两句