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
有人可以向我解释一下吗?
它正在输入语句,因为当它计算 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
. ||
条件导致与任何一方true
是true
。这不可能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 还有三个新的导航控件:
动态菜单树视图网站地图路径