C #. Это допустимое условное утверждение? - PullRequest
4 голосов
/ 12 мая 2010

У меня есть два метода, A и B. Только после успеха двух методов я должен вставить в базу данных. Так это действительный условный оператор в C #?

if (A() && B())
{
    //insert into db
}

После выполнения метода A я должен выполнить B. Если оба успешны, я должен сделать вставку.

Ответы [ 6 ]

8 голосов
/ 12 мая 2010

Да, это действительно. Но обратите внимание, что B будет выполняться, только если A() вернет true.

2 голосов
/ 12 мая 2010

Это называется оценка короткого замыкания

Условия будут оцениваться в порядке появления, и только если их тестирование все еще актуально. То есть, если A () не работает, нет смысла проверять B ().

0 голосов
/ 12 мая 2010

На ваш вопрос уже ответили другие, но просто для уточнения, так как здесь есть несколько слегка вводящих в заблуждение сообщений ...

Оператор && замкнут накоротко

if (false && Foo()) // Foo() is not run

Оператор & не короткое замыкание

if (false & Foo()) // Foo() is run

Используйте последнее, если у ваших функций есть побочные эффекты, которые вы хотите обеспечить.

0 голосов
/ 12 мая 2010

set fa = 1 fd = 1 внутри обеих функций.

Затем проверьте

если (фа == фб == 1) { //делать }

0 голосов
/ 12 мая 2010

Как говорится, B () не выполняется, если A () возвращает false. Если вы хотите, чтобы обе функции выполнялись, я рекомендую что-то вроде:

bool resultA = A();
bool resultB = B();
if(resultA && resultB)
{
    //insert into db
}
0 голосов
/ 12 мая 2010

должно быть

if(A()) 
{ 
   if(B())
   {
    //insert into db 
   }
} 

Это позаботится о том, чтобы обе функции выполнялись.

...