我试图将索引1到27转换为相应的大写字母.我知道在C++中我可以输入:
char letter = 'A' + (char)(myIndex % 27);
Run Code Online (Sandbox Code Playgroud)
这个相同的代码在C#中不起作用.如何在C#中完成此任务?
编辑:如果有一个像上面这样的更好的数学解决方案,我宁愿不必为此编码枚举或开关语句.
当您添加(或减去)两个字符时,您将获得C#中的Int32.这将有效:
int letter = 'A' + (char)(myIndex % 27);
Run Code Online (Sandbox Code Playgroud)
如果你想要一个char,你需要再次显式地转换它:
char letter = (char) ('A' + (char)(myIndex % 27));
Run Code Online (Sandbox Code Playgroud)
但是,这很可能应该是:
char letter = (char) ('A' + (char)((myIndex - 1) % 26));
Run Code Online (Sandbox Code Playgroud)
这是一个表驱动的解决方案:
char ToUpperChar(int index)
{
if (index < 1 || index > 26)
throw new ArgumentOutOfRangeException("index");
return "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[index-1]; // took out the % - it's range-checked above.
}
Run Code Online (Sandbox Code Playgroud)