好的,所以我是C#的初学者,我无法理解下面的if语句。
对于此示例,INumber声明为8,dPrice为0,dTAX为10.
if (iNumber != 8 || iNumber != 9)
{
dPrice = dPrice + dTAX;
}
有人可以解释为什么它会进入声明并将dTAX中的10添加到dPrice中吗?
我知道将它更改为&&有效,但为什么?
根据我的理解,它应该只输入If语句,如果iNumber不等于8或9,它就在这里,所以它不应该进入。
这是我在通过||运行后的输出if statement。
Inumber is: 8
dPrice was: 0
dPrice is now: 10
dTAX is: 10
有人可以向我解释一下吗?
答案 0 :(得分:4)
它正在输入语句,因为该语句在计算iNumber!= 9
时变为true一个||如果任何陈述为真,则if中的(或运算符)为真。
以这种方式思考..
8 != 8 is False
8 != 9 is True
if ( False || True )
{
//Do Stuff
}
答案 1 :(得分:3)
此代码中的if
条件始终评估为true
:
if (iNumber != 8 || iNumber != 9)
当iNumber
为8
时,它不等于9
,因此第二部分为true
。当iNumber
为9
时,它不等于8
,因此第一部分为true
。其他任何事情,双方都是true
。 ||
条件导致true
,任何一方都是true
。永远不可能false
。您希望此处&&
代替||
:
if (iNumber != 8 && iNumber != 9)
或者您可以使用DeMorgan's Law并获取此信息:
if (! (iNumber == 8 || iNumber == 9))
答案 2 :(得分:1)
它应该只输入If语句,如果iNumber不等于8或者如果iNumber不等于9.它不等于9,所以它将进入
答案 3 :(得分:1)
逻辑AND(&&)
如果两个操作数均为true,则逻辑AND运算符(&&)返回布尔值true,否则返回false。在评估之前,操作数被隐式转换为bool类型,结果是bool类型。逻辑AND具有从左到右的关联性。
逻辑OR(||)
如果其中一个或两个操作数为true,则逻辑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
}
答案 4 :(得分:1)
该陈述在逻辑上等同于
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;
}
以逻辑的方式对你更有意义。
答案 5 :(得分:0)
您正在使用||
(Logical OR),如果任何操作数为true,则评估为true。因此,您的第一个条件(iNumber != 8
)为false,但第二个条件(iNumber != 9
)为true,因此整体结果为true。
它与&&
一起使用的原因是AND运算符要求两个操作数都为true,以求为true。如果其中一个操作数为false,则整体结果为false。
答案 6 :(得分:0)
|| OR运算符表示只有一个OR或另一个必须为真。在这种情况下,iNumber!= 9,因此代码的一部分为真并且它进入语句。我想你会想要使用&& amp; AND运算符表示它不能为8并且它不能为9.
答案 7 :(得分:0)
在英语中,其内容如下:如果iNumber不是8或iNumber不是9。 iNumber是8,它不是9(你的第二次检查),所以它落入if块。
你正在描述一个AND条件,它不等于8,它不等于9。
答案 8 :(得分:0)
如果iNumber不等于8或者,它应该只输入If语句 9
那将是:
if (!(iNumber == 8 || iNumber == 9))
...
答案 9 :(得分:0)
使用
if (iNumber != 8 && iNumber != 9)
这意味着"如果iNumber不等于8且iNumber不等于9"。你的陈述:
if (!Number != 8 || iNumber != 9)
表示"如果!iNumber不等于8或iNumber不等于9"只要iNumber不等于其中一个值,并且因为它只能同时保存一个值而不是两个值,这是正确的,这个语句将永远为真。
答案 10 :(得分:0)
以下内容来自MSDN:
条件OR运算符(||)执行其bool的逻辑或运算 操作数。如果第一个操作数的计算结果为true,则为第二个操作数 没有评估。如果第一个操作数的计算结果为false,则第二个操作数 operator确定OR表达式是否作为整体求值 是真还是假。
在您的示例中,第一个条件(!= 8)为false,因为iNumber = 8,但第二个条件是(!= 9),这是真的。这就是它进入大括号的原因。
相反,如果你说!= 8&& != 9,它不会进入括号,因为它不满足这两个条件。
答案 11 :(得分:-1)
维护大型网站的菜单既困难又耗时。
在ASP.NET中,菜单可以存储在文件中,以使其易于维护。该文件通常称为web.sitemap,并存储在Web的根目录中。
此外,ASP.NET具有三个新的导航控件:
动态菜单 树视图 站点地图路径