有c#吗??操作者短路?
在C#中使用??
运算符时,如果测试的值不为空,是否会短路?
示例:
string test = null;
string test2 = test ?? "Default";
string test3 = test2 ?? test.ToLower();
test3 行是否成功或抛出空引用异常?
所以用另一种方式来表达这个问题: ?? 的右手表达会吗?如果左手不为空,运算符会被求值吗?
When using the ??
operator in C#, does it short circuit if the value being tested is not null?
Example:
string test = null;
string test2 = test ?? "Default";
string test3 = test2 ?? test.ToLower();
Does the test3 line succeed or throw a null reference exception?
So another way to phrase the question: Will the right hand expression of the ?? operator get evaluated if the left hand is not null?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,C# 中是这样说的语言规范(我突出显示):
Yes, it says so in the C# Language Specification (highlighting by me):
是的,它短路了。
上面的程序输出“Hi”,而不是抛出 NullReferenceException。
Yes, it short circuits.
The above program outputs "Hi" rather than throwing a
NullReferenceException
.是的。
如果它没有短路,则将调用 test() 并且消息框将显示它“没有短路”。
Yes.
If it did not short circuit, test() would be called and a messagebox would show that it "does not short circuit".