質問

UInt16(ushort)を使用してすべての値をループするループが欲しい。ただし、これではできません。

for( ushort i = 0; i < UInt16.MaxValue; i++ )
{
    // do something
}

問題は、<!> quot; do something <!> quot;ではなく、i == 0xFFFFのときにループが終了することです。 「for」ステートメントを<!> quot; for(ushort i = 0; i <!> lt; = UInt16.MaxValue; i ++)<!> quot;に変更すると、無限ループになります。 ushortsは0xFFFFにしか移動しないため、0x10000になります。

「i」をintにしてキャストするか、ループ内のushort変数に割り当てることができます。

提案はありますか

役に立ちましたか?

解決

do...whileループを使用

ushort i = 0;
do
{
    // do something
} while(i++ < UInt16.MaxValue);

上と下でループをテストする興味深い議論がありますこちら

scroll top