首页 > 解决方案 > 澄清对这个条件的理解

问题描述

我目前正在通过一系列教程学习 C#,并且想知道我对这个条件的理解是否有意义。

在此处输入图像描述

这段代码让我感到困惑的是,教程说如果 1 为 0,那么 validateNames 布尔值在逻辑上似乎毫无用处。我最终发现 validateNames 表明代码在某些时候不仅要验证一个名称,还要验证多个名称。我得出的结论是,如果将 player 设置为 0,则 bool 似乎无用,因为当第二个条件将在只有 1 或更多的玩家。我的结论有意义吗?我对此并不完全有信心。

在此处输入图像描述

如果有人需要有关它的更多信息来帮助回答我的问题,这就是制作教程的人所说的关于代码的内容。

标签: c#unity3dbooleanconditional

解决方案


我不能说您的理解是否正确,因为从您的问题中不清楚您对代码的理解是什么。

当你说:

我得出的结论是,如果将玩家设置为 0,则布尔值似乎无用

你指的是哪个布尔值?

无论如何,在你学习的过程中,我建议你养成创建小程序来测试这样的逻辑的习惯。

您可以使用LinqPad 之类的工具(我觉得它非常宝贵)或dotnetfiddle 之类的在线 IDE 。

像这样的东西会告诉你这里发生了什么,这应该有助于澄清事情:

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' 为真,那么无论 'isOnline' 或 'players' 的值如何,它都会进行验证。

事实上,我相信运行时甚至不会费心评估or运算符的第二部分,因为它已经找到了一个true条件。


推荐阅读