为什么 c# "&&" 运算符给出此错误"不能应用于类型为 'bool' 和 'int' 的操作数"



BH当我输入以下代码或其变体时,我不确定为什么会一直出现这个错误:

int age = 20;
int score = 49;
int crazy = 100;
if (age = 20 && score  < 50 || score > 95) {
Console.WriteLine("Welcome");     }

这是错误:错误CS0019:Operator'&amp;'不能应用于类型为"int"one_answers"bool"的操作数

这个很棒的社区里有人能帮忙吗?谢谢

这里需要注意的是,当C#进行赋值(将值放入变量中(时,它还会返回已赋值的值。此:

age = 20

返回一个值,20

你可以在另一项任务中使用这个:

score = age = 20;

年龄是20,因为我们给它赋值,它返回20。Score也是20,因为我们给它分配了(年龄=20(的返回值。给Score分配(分配年龄的结果(也返回了一个值。。我们可以永远这样下去:

a=b=c=d=e=f...=x=y=z=20; //all 26 variables now have a value of 20 

我们可以将返回值视为和的元素,就像其他元素一样:

score = (age = 20) + 1;

将20分配给年龄,将21分配给分数,并返回21


我们可以更改类型,就像我们可以说myString = 20.ToString()一样(是的,你可以像调用变量一样调用常量上的方法(,我们可以这样说:

myString = (score = (age = 20) + 1).ToString();

将20分配给年龄,将21分配给分数,然后将返回的21变为字符串;21〃;到myString

--

好吧,这种愚蠢已经够了。。但希望你能明白为什么

if(age = 20 && score < 50)

正在给出它所做的错误。age设置为20,返回20,并使用(score<50(对&&进行编辑,这是一个返回布尔值的操作。这意味着它就像你写的那样:

age = 20;
if(20 && score < 50)

这种简单的说法不起作用。干得好,这不是JavaScript。

当然,你很可能想用==来比较年龄,而不是用=来做作业

请记住,赋值也会产生值,这就是为什么这个看起来疯狂的循环有效:

while(null != x = stream.Read()) //loop while Read() doesn't return null
{
//use x, which certainly has a non null value 
}

不过,我在使用复合赋值和比较语句时要谨慎——它们的可读性比一步一步拼写出来的要差得多:

for(x = stream.Read(); x != null; x = stream.Read())

相关内容

最新更新