繁体   English   中英

C#如果或逻辑比较

[英]c# if or logic comparison

有人可以用||解释ifs的逻辑吗 在c#中,因为此刻所有三个if都执行

     string bla = "0";
        if (bla != "0" || bla != "")
        {
           //
            Console.WriteLine();
        }
        if (bla != "0" | bla != "")
        {
            //
            Console.WriteLine();
        }
        if (bla == "0" || bla == "")
        {
            Console.WriteLine();
            //
        }
  • 第一个说:bla不是“ 0”或bla不是一个空字符串
  • 第二个说:bla不是“ 0” [按位]或bla不是一个空字符串
  • 第三个说: bla为“ 0”或bla为空字符串

粗体部分是导致IF条件通过的原因。

我不会深入解释按位运算符,但是您需要在这里知道的是,即使第一部分是真实的,它也将执行第二部分(即,它不像逻辑运算符那样懒惰)。

如果||都是正确的 are或operator和bla不能同时等于零和空字符串。 这意味着or子句之一始终求值为true,并导致所有if语句执行。

您是否要使用&&(和)运算符?

那就是“ OR”运算符。 如果要执行,只需要满足一个条件即可。

通过替换变量并“大声读出”,您将获得以下信息:

#1,如果“ 0”!=“ 0”或“ 0”!=“”在这种情况下,确实是“ 0”!=“”

#2如果“ 0”!=“ 0” | “ 0”!=“”在这种情况下,您将| true(按位),等于true

#3,如果“ 0” ==“ 0”或“ 0” ==“”,在这种情况下,“ 0” ==“ 0”为真,则整个条件为真。

您可以使用&&(AND)运算符尝试比较这些差异。

|| 是从基础数学派生而来的另一种选择。 可以理解为OR连通性,如果我们至少给出了两个逻辑公式p,q,则适用下表。 1是true 0我是false。

p | q |  p || q
0 | 0 |    0
0 | 1 |    1
1 | 0 |    1
1 | 1 |    1

任何条件指令中的逻辑表达式均由数学已知的逻辑规则求值。

提出更多问题之前,您应该了解以下内容:连词&& ,替代|| ,独家替代^和一元运算符取反! 您还应该了解懒惰评估。

|| ifs表示“或”条件,因此在代码中,当bla等于“ 0”或bla等于“”时,每个if都将执行。 如果相等则有3个,因此它们将被执行,因为bla等于“ 0”。

||之间的区别 | ,是逻辑Or( || )的值,如果第一个操作数的值为True,则第二个操作数的值为不。 对于按位或( | ),始终都会对它们进行求值。 在您的情况下,结果是相同的。

有关更多详细信息,请参见MSDN

比较这些的方式是这样的:

使用“ ”( || )比较器,如果一个或两个为真,则整个比较为真。

true || false = true
true || true = true
false || false = false

因此,因为在所有三个比较中,其中一个比较成立,所以所有三个都执行

硬币的反面: && )的工作方式相反

true && false = false
false && false = false
true && true = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM