c# - 澄清对这个条件的理解
问题描述
我目前正在通过一系列教程学习 C#,并且想知道我对这个条件的理解是否有意义。
这段代码让我感到困惑的是,教程说如果 1 为 0,那么 validateNames 布尔值在逻辑上似乎毫无用处。我最终发现 validateNames 表明代码在某些时候不仅要验证一个名称,还要验证多个名称。我得出的结论是,如果将 player 设置为 0,则 bool 似乎无用,因为当第二个条件将在只有 1 或更多的玩家。我的结论有意义吗?我对此并不完全有信心。
如果有人需要有关它的更多信息来帮助回答我的问题,这就是制作教程的人所说的关于代码的内容。
解决方案
我不能说您的理解是否正确,因为从您的问题中不清楚您对代码的理解是什么。
当你说:
我得出的结论是,如果将玩家设置为 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
条件。
推荐阅读
- file - JavaFX 文件资源管理器自定义
- android - Firebase 实时数据库未显示现有数据库但工作正常
- javascript - 如何使用 window.open 应用样式并使窗口可扩展
- cytoscape - Cytoscape 多变量样式
- python-3.x - 通过systemd找不到python模块,但手动工作
- reactjs - React、Redux 和 Recompose:“调度不是函数”
- database - 我可以在不传递用户名和密码的情况下使用 Type 2 JDBC Driver 从 java 中调用 SP 吗?
- haskell - 这甚至是 Haskell 中的一个函数吗?如果是这样,我们应该如何阅读它?
- pentaho - Pentaho 报告缓慢
- wordpress - 在 Wordpress 中自动重定向/重写 1000 个旧帖子 url