从c#中的特定点跳过特定代码?

时间:2017-08-24 10:48:31

标签: c# asp.net-mvc

如何从c#中的特定点跳过特定代码? 假设在if条件下我正在使用另一个if条件并且我想跳过它,如果内条件如果条件变为假,我怎么能跳过那个较低的代码。那怎么能实现呢? 这是我的情景

if(true)
{
    var discount = GetDicsount(price);
    if(discount > 100)
    {
        //kill here and go away to from main if condition and skip do other work and move to GetType line directly
    }
    //Do Other Work
}
int type = GetType(20);

2 个答案:

答案 0 :(得分:3)

您可以反转if

if (discount <= 100) {
   // Do Other Work
}

没有命令可以从if块中断, 但是你可以使用goto但这会让你的代码更难以遵循。

我认为这里真正的问题不是很好的嵌套。

查看嵌套问题以及如何展平代码 所以它变得更易读,更容易理解:

https://en.wikibooks.org/wiki/Computer_Programming/Coding_Style/Minimize_nesting http://wiki.c2.com/?ArrowAntiPattern

所以你的代码看起来像这样,例如:

var discount = (int?) null;
if (someCondition)
{
    discount = GetDiscount(price);
}

if (discount.Value <= 100)
{
    // Do Other Work
}

int type = GetType(20);

答案 1 :(得分:2)

为什么不改变逻辑,以便颠倒if逻辑并在那里做其他工作?

if(true){
   var discount = GetDiscount(price);
  if(discount <= 100){
   //Do Other Work
  }
}
int type = GetType(20);

请注意,您的外部if语句始终为true。我假设这只是为了示例,但如果它是实际代码,您可以删除它:

var discount = GetDiscount(price);
if(discount > 100)
{
    return;
}
//Do Other Work

如果你真的想做你所问的,你可以看一下goto(不推荐)。

if(true)
{
    var discount = GetDiscount(price);
    if(discount > 100)
    {
        goto last;
    }
    //Do Other Work
}
last:
int type = GetType(20);