不明显的数组索引

Yip*_*Yay 3 c# arrays casting

最近我在一个项目中看到了很多类似的代码块,它们按以下方式编写:

String usedAlphabet = "x3w4tnu34urgbgierg";

byte c = // (something initialized earlier)

return usedAlphabet[(int)(c / 16)];
Run Code Online (Sandbox Code Playgroud)

现在,(int)在访问相应的数组时使用强制转换的原因是什么?

对我而言,这似乎是多余的,但我可能错了,或者我可能缺乏关于类型铸造机制的知识.

Mar*_*ell 6

你是对的; 这里多余.有时冗余演员可以使读者的使用更加明显,但这取决于上下文.


Ode*_*ded 5

你是对的 - 除法是整数除法,它总是得到一个整数,因此不需要强制转换.

然而,c它本身缺乏上下文(特别是如果没有定义接近这种用法),因为这可能不是很明显byte / int.可以添加铸件作为可读性辅助.