我想反转开关块里面的代码,而不是自己做(这对我来说似乎毫无意义)ex:
{ 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使其反转为这样:
case '1':
s += 'a';break;
case '2':
s += 'q'; break;
Run Code Online (Sandbox Code Playgroud)
我的代码包含每个字符超过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);
}
Run Code Online (Sandbox Code Playgroud)
然后使用这个:
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
}
Run Code Online (Sandbox Code Playgroud)
反之亦然:
char outputChar;
if (reverseDictionary.TryGetValue(inputChar, out outputChar))
{
// use outputChar
}
Run Code Online (Sandbox Code Playgroud)