在VS2015预览版中使用C#6.0,我们有一个新的运算符,?.可以像这样使用:
public class A {
string PropertyOfA { get; set; }
}
...
var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo) {
//somecode
}
Run Code Online (Sandbox Code Playgroud)
它到底是做什么用的?
根据文档我明白
bool result = someMethod() || true;
Run Code Online (Sandbox Code Playgroud)
.NET 编译器无法优化
bool result = true; // (or actually inlined)
Run Code Online (Sandbox Code Playgroud)
换句话说,我的理解是someMethod()总是被执行。
那是对的吗?我只是在寻找确认。
如果我将if语句分隔为||返回true,它会继续声明吗?
例如:if(true || random()),将random()被执行?因为没有理由这样做.
可能重复:
在.NET中依赖&&短路安全吗?
我不确定如何正确地标出问题的标题,但用一行代码解释起来非常简单:
if (someObject == null || someObject.someProperty)
...
Run Code Online (Sandbox Code Playgroud)
我能这样做吗?或者这一个:
if (someObject != null && someObject.someProperty)
...
Run Code Online (Sandbox Code Playgroud) 第一次错误验证后返回结果的最佳方法是什么?我想实现相同的功能,而无需在每次验证后检查结果。
bool ValidateMany()
{
bool result=true;
if(ValidateFirstProperty){
result = ValidateFirst();
if(result == false)
return result;
}
if(ValidateSecondProperty){
result=ValidateSecond();
if(result == false)
return result;
}
//always validate third one
result=ValidateThird();
if(result == false)
return result;
return result;
}
Run Code Online (Sandbox Code Playgroud)