<分区>
我不知道 String 对象的 IndexOf() 方法是如何工作的,所以我想知道在以下 2 个实现中哪个优于另一个:
首先,我想稍微介绍一下这个问题,简单地说,这里实现的函数/方法只有一个字符作为参数,它应该给出/返回与传入的字符对应的另一个字符。(规则下面给出了源字符集合和目标字符集合之间的匹配:
a <=> 9
b <=> 8
c <=> 7
d <=> 6
e <=> 5
f <=> 4
g <=> 3
h <=> 2
i <=> 1
j <=> 0
请注意,以上规则只是为了便于遵循,它不是固定规则,它可以是任何规则,因此不要基于该规则以其他方式实现这些方法。
现在是我想比较的 2 种方法:
1。第一个很短,基于 IndexOf()
string source = "abcdefghij";
string destination = "9876543210";
public char SourceToDest(char c){
return destination[source.IndexOf(c)];//Suppose the c is always in source.
}
2。第二个更长,使用 switch case:
public char SourceToDest(char c){
switch(c){
case 'a': return '9';
case 'b': return '8';
case 'c': return '7';
case 'd': return '6';
case 'e': return '5';
case 'f': return '4';
case 'g': return '3';
case 'h': return '2';
case 'i': return '1';
case 'j': return '0';
}
}
正如我之前提到的,这个规则是为了容易遵循,如果没有注意到这一点,你可能有另一种方法是这样的:
public char SourceToDest(char c){
return (char)(154 - (int)c); //154 = 106 + 48
}
如果您有另一种方法优于我介绍的两种方法,请与我分享。