我想要一个使用UInt16(ushort)循环遍历其所有值的循环.但是,这不会这样做:
for( ushort i = 0; i < UInt16.MaxValue; i++ )
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
问题是,当i == 0xFFFF而不是"做某事"时,循环将退出.如果我将'for'语句更改为"for(ushort i = 0; i <= UInt16.MaxValue; i ++)",那么它将变为无限循环,因为我永远不会达到0x10000因为ushorts只转到0xFFFF.
我可以使'i'成为一个int并将其转换为或者将其分配给循环中的ushort变量.
有什么建议?
Chr*_*org 17
使用do...while循环
ushort i = 0;
do
{
// do something
} while(i++ < UInt16.MaxValue);
Run Code Online (Sandbox Code Playgroud)
有一个在顶部或底部测试循环的一个有趣的讨论在这里.
UInt16.MaxValue评估0xffff,而不是0x10000.我认为你可以用do/ whileloop 做这个,作为burkhard1979答案的一个变种.
ushort i = 0;
do {
...
} while (++i != 0);
Run Code Online (Sandbox Code Playgroud)