2014-10-08 2 views
2

Вот пример моего кода. Мне нужно последнее if ничего не делать, иначе что-нибудь сделать.Как вы делаете «если» stament «ничего не делать» в C#?

if (daPilot.Gas > 0) 
    ; 
else 
    daPilot.failMessage3(); 
+2

Гораздо проще (и гораздо более уместно) сделать ветку 'else' заявления ничего не делать просто, опуская ее. – dasblinkenlight

+0

благодарит всех за большую помощь – missahippy

ответ

1

передачи заднего хода if:

if (daPilot.Gas <= 0) daPilot.failMessage3();

2

Просто инвертировать условие if и объявить только true часть:

if (daPilot.Gas <= 0) 
    daPilot.failMessage3(); 

Во всяком случае, вы всегда можете объявить пустое тело при необходимости: { }.
Например:

while (condition) 
{ 
} 
1

Вы можете инвертировать if, попробуйте следующее:

if (daPilot.Gas <= 0) 
{ 
    daPilot.failMessage3(); 
} 
1

, если вы действительно хотите, чтобы ничего не делать

 { 
      if (daPilot.Gas > 0) 
      { 
      } 
      else 
      { 
       daPilot.failMessage3(); 
      } 
     } 
3

двумя способами:

  1. Пустые curlys:

    if (condition) 
    { 
    } 
    else 
    { 
        method(); 
    } 
    
  2. Осознайте, что вы можете просто инвертировать условное:

    if (!condition) 
        method(); 
    
14

Вы уже сделали это. Поздравления.

Конечно, гораздо менее запутанный дизайн - это просто НЕ условие, а затем if без else.

+0

У него есть дополнительный полутень в заявлении, из-за которого он ошибется ... он еще этого не сделал. – DotN3TDev

+4

@ DotN3TDev У него нет дополнительной точки с запятой; у него есть ровно одна * необходимая * точка с запятой, что приводит к тому, что его код не имеет ошибок и делает то, что он просит. Он уже это сделал. 'if' ожидает, что за ним последует только один оператор'; '- это оператор, и он ничего не делает. – Servy

+0

справедливо, они не получат ошибку от ';' ... Я сомневаюсь, что они знали, что ';' является действительным заявлением и помещает его там, потому что они были в недоумении, зная, что делать ... это не лучший способ объяснить этот ответ, и есть лучшие ответы, которые были даны, которые заслуживают голосов. Я не понимаю, почему ваш ответ получил 11 голосов, где другие ответы, которые намного полезнее, получили один или ничего ... – DotN3TDev

5
if (daPilot.Gas > 0) 
{ 
    // nothing 
}       
else 
{ 
    daPilot.failMessage3(); 
} 

Или еще проще,

if (daPilot.Gas <= 0) 
{   
    daPilot.failMessage3(); 
} 
+0

Инвертирование условия имеет больше смысла, но если нужно ничего не блокировать, то они должны добавить комментарий к этому эффекту (как вы показали). –

+1

Обратите внимание, что если «Газ» является одним/двумя, ваш код не будет эквивалентен коду OP. Я считаю довольно распространенным писать что-то вроде 'if (! (X> y))' плюс комментарий, чтобы люди не ошибочно упрощали его до 'if (x <= y)'. – CodesInChaos

3

Там нет смысла класть состояние ничего не делать. Вы должны сделать это так.

if (daPilot.Gas <= 0) 
    daPilot.failMessage3(); 
0

Давайте использовать оператор '!' как:

if (!(daPilot.Gas > 0)) 
     daPilot.failMessage3(); 

или с дополнительной переменной:

var isGasGreaterToZero = daPilot.Gas > 0; /*true or false*/ 

if(!isGasGreaterToZero) 
    daPilot.failMessage3(); 

В обоих случаях, если daPilot.Gas больше нуля (0) ничего не случится!

Смежные вопросы