if 语句和 && 或 ||

本文关键字:amp 语句 if | 更新日期: 2023-09-27 18:22:39

好的,所以我是C#的初学者,我很难理解下面的if语句。

在本例中,INumber 声明为 8,dPrice 为 0,dTAX 为 10。

        if (iNumber != 8 || iNumber != 9)
        {
            dPrice = dPrice + dTAX;
        }

有人可以解释为什么它输入语句并将 10 从 dTAX 添加到 dPrice 吗?

我知道将其更改为&&有效,但为什么?

据我了解,如果 iNumber 不等于 8 或 9,它应该只输入 If 语句,这里确实如此,所以它不应该输入。

以下是通过 || if 语句运行后的输出。

        Inumber is: 8
        dPrice was: 0
        dPrice is now: 10
        dTAX is: 10

有人可以向我解释一下吗?

if 语句和 && 或 ||

它正在输入语句,因为当它计算 iNumber != 9 时,语句变为 true

一个 ||如果任何语句为真,则 if 中的 (或运算符( 将为真。

这样想吧..

8 != 8 is False
8 != 9 is True
if ( False || True )
{
    //Do Stuff
}

此代码中的if条件表达式将始终计算为true

if (iNumber != 8 || iNumber != 9)

iNumber 8时,不等于9,所以第二部分是true。当iNumber 9时,它不等于8,所以第一部分是true。其他任何事情,双方都true. ||条件导致与任何一方truetrue。这不可能false.您希望在此处&&而不是||

if (iNumber != 8 && iNumber != 9)

或者你可以使用德摩根定律得到这个:

if (! (iNumber == 8 || iNumber == 9))

应该只输入 If 语句,如果 iNumber 不等于 8 或 iNumber 不等于 9。 它不等于 9,所以它将输入

该语句在逻辑上等效于

    if (!(iNumber == 8 && iNumber == 9))
    {
        dPrice = dPrice + dTAX;
    }

这总是正确的,因为一个数字不能同时是 8 和 9。

你想要:

    if (iNumber != 8 && iNumber != 9)
    {
        dPrice = dPrice + dTAX;
    }

    if (!(iNumber == 8 || iNumber == 9))
    {
        dPrice = dPrice + dTAX;
    }

从逻辑上讲,哪个对你更有意义。

逻辑和 (&&(

如果两个操作数都为真,则逻辑 AND 运算符 (&&( 返回布尔值 true,否则返回 false。在计算之前,操作数将隐式转换为 bool 类型,结果为 bool 类型。逻辑 AND 具有从左到右的关联性。

逻辑或 (||(

如果其中一个或两个操作数为真,则逻辑 OR 运算符 (||( 返回布尔值 true,否则返回 false。在计算之前,操作数将隐式转换为 bool 类型,结果为 bool 类型。逻辑 OR 具有从左到右的关联性。

因此,如果您有:

bool someVariable = true;
bool someOtherVariable = false;
if ((someVariable == true) && (someOtherVaribale == true))
{
    //This code will be executed
}
if ((someVaribale == true) || (someOtherVariable == true))
{
    //This code will be executed
}

以下内容来自 MSDN:

条件 OR 运算符 (||( 对其布尔值执行逻辑 OR。 操作。如果第一个操作数的计算结果为 true,则第二个操作数 不进行评估。如果第一个操作数的计算结果为 false,则第二个操作数 运算符确定 OR 表达式作为一个整体的计算结果是否为 对或错。

在您的示例中,第一个条件 (!=8( 为假,因为 iNumber = 8,但第二个条件为 (!=9(,这是真的。所以这就是为什么它进入牙套。

相反,如果你说 !=8 &&!=9,它不会放在大括号里,因为它不满足这两个条件。

您正在使用||(逻辑 OR(,如果任何操作数为 true,则计算结果为 true。所以你的第一个条件(iNumber != 8(是假的,但第二个条件(iNumber != 9(是真的,因此总体结果是真的。

它适用于&&的原因是 AND 运算符要求两个操作数都为真,计算结果为 true。如果其中一个操作数为假,则总体结果为假。

你应该看到:真值表、逻辑和德摩根定律

||OR 运算符表示只有一个 OR 另一个必须为真。在本例中,iNumber != 9,因此代码的那部分为真并进入语句。我想你会想使用 &&AND 运算符来指示它不能是 8 也不能是 9。

在英语中,这读作:如果 iNumber 不是 8 或 iNumber 不是 9。iNumber 是 8,它不是 9(您的第二次检查(,因此它落入 if 块。

您描述的是一个 AND 条件,其中它不等于 8 也不等于 9。

使用

if (iNumber != 8 && iNumber != 9)

这意味着"如果 iNumber 不等于 8 且 iNumber 不等于 9"。您的陈述:

if (!Number != 8 || iNumber != 9)

表示"如果 !iNumber 不等于 8 或 iNumber 不等于 9",只要 iNumber 不等于其中一个值,这都是正确的,并且因为它只能同时保存一个值而不是同时保存两个值,所以这个陈述将永远为真。

它应该只输入 If 语句,如果 iNumber 不等于 8 或 9

那将是:

if (!(iNumber == 8 || iNumber == 9))
...

维护大型网站的菜单既困难又耗时。

在 ASP.NET 菜单中,菜单可以存储在文件中,以便于维护。这个文件通常被称为web.sitemap,存储在web的根目录中。

此外,ASP.NET 还有三个新的导航控件:

动态菜单树视图网站地图路径