如何将整数转换为C#中的字符?

Mik*_*ebb 1 c# char

我试图将索引1到27转换为相应的大写字母.我知道在C++中我可以输入:

char letter = 'A' + (char)(myIndex % 27);
Run Code Online (Sandbox Code Playgroud)

这个相同的代码在C#中不起作用.如何在C#中完成此任务?

编辑:如果有一个像上面这样的更好的数学解决方案,我宁愿不必为此编码枚举或开关语句.

Ree*_*sey 8

当您添加(或减去)两个字符时,您将获得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)


pli*_*nth 6

这是一个表驱动的解决方案:

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)