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