澄清对这个条件的理解
Clarifying understanding of this conditional
我目前正在通过一系列教程学习 C#,想知道我对这个条件的理解是否有意义。
让我对这段代码感到困惑的是,教程说如果 1 为 0,那么 validateNames bool 在逻辑上似乎毫无用处。我最终发现 validateNames 表明代码应该在某个时候不仅验证一个,而且验证多个名称。我得出的结论是,如果将玩家设置为 0,则布尔值似乎毫无用处,因为当第二个条件将 运行 时,您不需要指示代码将在多个名称上 运行 的布尔值只有 1 个或多个玩家时的代码。我的结论有道理吗?我对此不是完全有信心。
如果有人需要有关代码的更多信息来帮助回答我的问题,请参考编写本教程的人对代码的评价。
我不能说你的理解是否正确,因为从你的问题中并不清楚你对代码的理解是什么。
当你说:
I came to the conclusion that the bool would seem useless if players
was set to 0
你指的是哪个布尔值?
无论如何,在你学习的过程中,我建议养成创建小程序来测试这样的逻辑的习惯。
您可以使用像 LinqPad (which I find invaluable) or an online IDE like 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' 为真,那么无论 'isOnline' 或 'players' 的值如何,它都会进行验证。
事实上,我相信运行时甚至不会计算 or
运算符的第二部分,因为它已经找到了 true
条件。
我目前正在通过一系列教程学习 C#,想知道我对这个条件的理解是否有意义。
让我对这段代码感到困惑的是,教程说如果 1 为 0,那么 validateNames bool 在逻辑上似乎毫无用处。我最终发现 validateNames 表明代码应该在某个时候不仅验证一个,而且验证多个名称。我得出的结论是,如果将玩家设置为 0,则布尔值似乎毫无用处,因为当第二个条件将 运行 时,您不需要指示代码将在多个名称上 运行 的布尔值只有 1 个或多个玩家时的代码。我的结论有道理吗?我对此不是完全有信心。
如果有人需要有关代码的更多信息来帮助回答我的问题,请参考编写本教程的人对代码的评价。
我不能说你的理解是否正确,因为从你的问题中并不清楚你对代码的理解是什么。
当你说:
I came to the conclusion that the bool would seem useless if players was set to 0
你指的是哪个布尔值?
无论如何,在你学习的过程中,我建议养成创建小程序来测试这样的逻辑的习惯。
您可以使用像 LinqPad (which I find invaluable) or an online IDE like 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' 为真,那么无论 'isOnline' 或 'players' 的值如何,它都会进行验证。
事实上,我相信运行时甚至不会计算 or
运算符的第二部分,因为它已经找到了 true
条件。