所以我在处理现有代码库时遇到了这段代码。我的问题是为什么这里没有使用赋值运算符。
int getSum(int mVar) {
int sum = 0;
sum += ((mVar != null) ? mVar : 0);
return sum;
}
似乎一个赋值运算符就足够了:
int getSum(int mVar) {
int sum = ((mVar != null) ? mVar : 0);
return sum;
}
将值初始化为零有什么好处吗?
答案 0 :(得分:4)
此
int getSum(int mVar) {
int sum = 0;
sum += ((mVar != null) ? mVar : 0);
return sum;
}
与
相同int getSum(int mVar) {
int sum = 0;
if( mVar != null ) {
sum = sum + mVar;
} else {
sum = sum + 0;
}
return sum;
}
它只是简写的代码。 :)
正如提到的许多评论一样,a += b
与a = a + b
相同。这是一个非常好的技巧。这同样适用于a -= b
,a *= b
和a /= b
。
如果你很好奇,(mVar != null) ? mVar : 0;
是一个三元运算符。它类似condition ? value if true : value if false;
,通常用于作业。
但有些注意事项。 int
是原始数据类型,永远不能为空,因此上面的代码只是为了解释语法。
答案 1 :(得分:0)
要回答您的问题,在此示例中使用“+ =”没有意义,常规赋值运算符更好
int getSum(int mVar) {
int sum = 0;
sum += ((mVar != null) ? mVar : 0);
return sum;
}
此代码是“+ =”的错误示例,因为此处不应使用此代码。相反它应该是:
int getSum(Integer mVar) {
return mVar != null? mvar : 0;
}
您没有看到“+ =”的好处,因为sum
已经是0
。所以,你看看它,你想知道为什么你会做sum = 0 + mVar;
(这与sum += mVar
sum = mVar;
int getSum(int mVar) {
int sum = 5;
sum += ((mVar != null) ? mVar : 10);
return sum;
}
时的sum = sum + mVar;
相同
一个更好的例子是(ofc这些值可能没有意义,但它使“+ =”有价值):
input {
color: white;
}
input[type=text]:-moz-placeholder {
color: gray;
}
input[type=text]::-moz-placeholder {
color: gray;
}
input[type=text]:-ms-input-placeholder {
color: gray;
}
input[type=text]::-webkit-input-placeholder {
color: gray;
}
这样一来,如果你不使用“+ =”,就会被迫说A first chance exception of type 'System.Net.WebException' occurred in System.dll
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.GetResponse()
,否则就不正确了。