退出循环没有中断/返回/如果

时间:2015-08-10 11:58:48

标签: c# return break

如果您有for循环:

for(i=0;i<10;i++){} 

现在,在i==5时,如何在不使用breakreturnif的情况下完全退出for循环?

7 个答案:

答案 0 :(得分:3)

我能想出的最好的是:

for (int i = 0; i < 10; i++) 
{
    i = (i == 5) ? 10 : i;

    Trace.WriteLine("i = " + i.ToString());
}

...这将导致循环运行六次(i = 0..5)并显示此..

i = 0
i = 1
i = 2
i = 3
i = 4
i = 10

退出循环的另一种方式&#34; (以一种特别讨厌的方式)就是这样做......

for (int i = 0; i < 10; i++) 
{
    int a = 3 / ((i == 5) ? 0 : 1);

    Trace.WriteLine("i = " + i.ToString());
}

..崩溃,错误,成功退出循环而不使用breakreturnif命令。

i = 0
i = 1
i = 2
i = 3
i = 4
A first chance exception of type 'System.DivideByZeroException' occurred in MikesProgram.dll
  

语言是C#。实际上是一个面试问题......好奇

我能得到这份工作吗?

我需要检查你的健康状况&amp;牙科计划,我必须在星期四早些时候离开,从学校收集我的女儿。

- )

答案 1 :(得分:1)

for (int n = 0; n < 10; n++)
{
    n += (n / 5) * 5;
}

答案 2 :(得分:1)

以下是另一种方法,如果您想在不使用// pixel data copied to WriteableBitmap then saved by JpegBitmapEncoder var reader = new gdcm.ImageReader(); var gimg = reader.GetImage(); WriteableBitmap wb = new WriteableBitmap((int)cols, (int)rows, 120, 120, PixelFormats.Gray16, null); wb.Lock(); Marshal.Copy(buff, 0, wb.BackBuffer, buff.Length); wb.Unlock(); using (var ms2 = new MemoryStream()) { JpegBitmapEncoder enc = new JpegBitmapEncoder(); enc.QualityLevel = 95; enc.Frames.Add(BitmapFrame.Create(wb)); enc.Save(ms2); jpegfile = ms2.GetBuffer(); } i = 5break

return时确切地中断处理
if

答案 3 :(得分:0)

for(i=0;i<10;i++){
 (i==5) ? goto Outer : //do something;
}
Outer:
//do something

答案 4 :(得分:0)

问题是循环应该在i = 5时结束,它没有说开始,所以这应该是有效的(三元运算符解决方案更好,但如果我们不允许使用任何条件运算符)

for (int i = 0; i < 10; i++)
    {           
        i=i-4;
        Console.WriteLine("i = " + i.ToString());
        i=i+4;
    }

这从-4开始到5结束。

答案 5 :(得分:0)

当然,真正的答案如下:

public static boolean isSimSupport(Context context)
    {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);  //gets the current TelephonyManager
        return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);

    }

但是让它变得更通用:停止if(表达式)变为真。

for循环的第二个参数是一个布尔表达式,它决定是否继续使用下一个元素循环。

因此,如果您因任何条件而想停止循环:

for (i=0; i!=5; i++)
{
   // do something
}

答案 6 :(得分:0)

这可以使用whilegoto

for (int i = 0; i < 10; i++)
{
    while (i < 5)
    {
        Console.Write(i + " ");
        goto OutsideWhile;
    }
  OutsideWhile:
        continue; 
}
// 0 1 2 3 4
相关问题