Til*_*dor 30 c# operators short-circuiting
??在C#中使用运算符时,如果被测试的值不为空,它是否会短路?
例:
string test = null;
string test2 = test ?? "Default";
string test3 = test2 ?? test.ToLower();
Run Code Online (Sandbox Code Playgroud)
test3行是成功还是抛出空引用异常?
所以用另一种方式来表达这个问题:请问右手表达的问题是什么?如果左手不为空,则运算符得到评估?
Dan*_*Tao 16
是的,它短路.
class Program
{
public static void Main()
{
string s = null;
string s2 = "Hi";
Console.WriteLine(s2 ?? s.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
上面的程序输出"Hi"而不是抛出一个NullReferenceException.
是.
public Form1()
{
string string1 = "test" ?? test();
MessageBox.Show(string1);
}
private string test()
{
MessageBox.Show("does not short circuit");
return "test";
}
Run Code Online (Sandbox Code Playgroud)
如果它没有短路,将调用test()并且消息框将显示它"不会短路".
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |