Я не могу сказать, верно ли ваше понимание, потому что из вашего вопроса непонятно, каково ваше понимание кода.
Когда вы говорите:
Я пришел к выводу, что бул будет казаться бесполезным, если игроки
был установлен на 0
К какому булу вы обращаетесь?
Независимо от того, как вы учитесь, я бы порекомендовал выработать небольшие программы для проверки логики, подобной этой.
Вы можете использовать такой инструмент, как LinqPad (который я считаю бесценным) или интерактивную среду разработки, например dotnetfiddle .
Нечто подобное покажет вам, что здесь происходит, что должно помочь прояснить ситуацию:
using System;
public class Program
{
public static void Main()
{
Console.Write("Test 1:");
TestBoolLogic(true, true, 0);
Console.Write("Test 2:");
TestBoolLogic(true, true, 1);
Console.Write("Test 3:");
TestBoolLogic(true, true, 2);
Console.Write("Test 4:");
TestBoolLogic(false, true, 0);
Console.Write("Test 5:");
TestBoolLogic(false, true, 1);
Console.Write("Test 6:");
TestBoolLogic(false, true, 2);
}
public static void TestBoolLogic(bool validateNames, bool isOnline, int players){
if(validateNames || (isOnline && players > 1)){
Console.WriteLine("Validating names");
}else{
Console.WriteLine("No validation");
}
}
}
, который производит вывод:
Test 1:Validating names
Test 2:Validating names
Test 3:Validating names
Test 4:No validation
Test 5:No validation
Test 6:Validating names
Таким образом, вы можете видеть, что если 'validateNames' имеет значение true, тогда он будет выполнять проверку независимо от 'isOnline' или значения 'Players'.
На самом деле, я считаю, что среда выполнения даже не потрудится оценить вторую часть оператора or
, потому что в нем уже найдено условие true
.