Уточняющее понимание этого условного - PullRequest
0 голосов
/ 06 ноября 2018

В настоящее время я изучаю C # через серию учебных пособий, и мне было интересно, имеет ли мое понимание этого условного смысла.

enter image description here

Что меня смутило в этом коде, так это то, что в учебнике сказано, что если 1 равно 0, то логическое значение validateNames логически будет бесполезным. Я обнаружил, что validateNames указывает, что в какой-то момент код должен проверять не одно, а несколько имен. Я пришел к выводу, что bool будет казаться бесполезным, если игроки будут установлены в 0, потому что вам не понадобится bool, указывающий, что код будет выполняться под несколькими именами, когда второе условное выражение будет запускать код, когда есть только 1 или больше игроков. Имеет ли смысл мое заключение? Я не совсем уверен в этом.

enter image description here

Вот что парень, написавший учебник, сказал о коде, если кому-то нужна дополнительная информация о нем, чтобы помочь ответить на мой вопрос.

1 Ответ

0 голосов
/ 06 ноября 2018

Я не могу сказать, верно ли ваше понимание, потому что из вашего вопроса непонятно, каково ваше понимание кода.

Когда вы говорите:

Я пришел к выводу, что бул будет казаться бесполезным, если игроки был установлен на 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.

...