2017-08-24 8 views
-4

C#の特定のポイントから特定のコードをスキップするにはどうすればよいですか? if条件内で別のif条件を使用していて、その条件をスキップしたいとします。inner if条件がfalseになった場合、どのように低いコードをスキップできますか?どうすればそれを達成できますか? これは私のシナリオC#の特定のポイントから特定のコードをスキップしますか?

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); 
+0

これは、ifが行っていることとまったく同じです。条件が満たされない場合、コードは実行されません。 – HimBromBeere

+0

'if(discount> 100){return;}のようにinnerで' return'を使います。 } '。 – mmushtaq

答えて

3

あなたはそこifブロック、 から壊れる何もコマンドがありませんが、あなたはgotoを使用することができますが、それは従って、あなたのコードは難しくなりますif

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

反転できます。

ここの本当の問題は、あまり良いネスティングではないと思います。

ので、それは従って、より読みやすく、容易になるネスティングの問題を見て、あなたのコード を平らにする方法:

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); 
+0

はい正解はgoto文を使用していました.thanks –

+0

@AliNafees - GOTO文を使用するのは正解の場合はほとんどありません**。正解は、ネストされたif文をフラット化することでコードの複雑さを減らし、コードを非常に読みやすくし、テストする必要のあるブランチの総数を減らすためです。 – Tommy

+0

はい、私はいくつかの知識のための代替案を探していました... –

2

あなたがもしロジックを逆にし、そこに他の作業を行うように、なぜ、あなたのロジックを変更しないのですか?

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); 
+0

はい私はそのようにすることができますが、私が尋ねたようにそれを行う方法はありますか? –

+2

@AliNafeesが更新されました。あなたはgotoを使うことができます。しかし、これは本当に悪いデザインです。 –

関連する問題