通过溢出从MinValue迭代到MaxValue

Tos*_*shi 7 c# for-loop

我有一个简单的循环,看起来应该是这样的

for (sbyte i = sbyte.MinValue; i <= sbyte.MaxValue; i++)
{
    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是sbyte.MaxValue +1 = sbyte.MinValue,这永远不会满足结束条件.我的解决方法是使用intfrom -128,127但是还有原生sbyte方法吗?

Yel*_*yev 6

没有考虑到明显的问题

输出所有除外MaxValue,然后输出MaxValue

方法,我看到一个解决方案.
它工作,但看起来很奇怪,OverflowException如果checked:)

sbyte i = sbyte.MinValue;
do
{
    Console.WriteLine(i++);
} while (i != sbyte.MinValue);
Run Code Online (Sandbox Code Playgroud)

  • 对不起,那是个错误.这段代码绝对有效,因为现在写的! (3认同)