Четкое, непрофессиональное объяснение разницы между | и || в с #? - PullRequest
45 голосов
/ 26 марта 2009

Хорошо, так что я читал об этом несколько раз, но мне еще предстоит услышать ясный, легкий для понимания (и запоминающийся) способ узнать разницу между:

if (x | y)

и

if (x || y)

.. в контексте C #. Может кто-нибудь, пожалуйста, помогите мне узнать эту основную истину, и, как C # конкретно, относится к ним по-разному (потому что они, кажется, делают то же самое) Если разница между этими частями кода не имеет значения, какую из них я должен использовать по умолчанию?

Ответы [ 11 ]

1 голос
/ 26 марта 2009

Хотя это уже было сказано и отвечено правильно, я думал, что я добавлю ответ настоящего непрофессионала, потому что на этом сайте я часто чувствую себя :). Кроме того, я добавлю пример & vs. &&, поскольку это та же концепция

| против ||

В основном вы склонны использовать || когда вы только хотите оценить вторую часть, ЕСЛИ первая часть ЛОЖЬ. Итак, это:

if (func1() || func2()) {func3();}

совпадает с

if (func1())
{
    func3();
}
else 
{
    if (func2()) {func3();}
}

Это может быть способом экономии времени обработки. Если func2 () занимает много времени, вы не захотите делать это, если func1 () уже была верна.

& vs &&

В случае & vs. && это аналогичная ситуация, когда вы оцениваете только вторую часть, ЕСЛИ первая часть ИСТИНА. Например это:

if (func1() && func2()) {func3();}

совпадает с

if (func1())
{
    if (func2()) {func3();}}
}

Это может быть необходимо, так как func2 () может зависеть от того, что func1 () сначала будет истинным. Если вы используете & и func1 () оценивается как false, & в любом случае запускает func2 (), что может вызвать ошибку времени выполнения.

Джефф-мирянин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...