最近我听说C#null-safe导航器(?.
)由于通过try - catch
实现而对性能产生影响。我很难相信?.
只有下面的包装,但我找不到任何关于它的证据。
try
{
...
}
catch (NullReferenceException)
{
return null;
}
答案 0 :(得分:2)
绝对不是这样。它只是一个if-else语句。 Try it out使用Roslyn并检查编译器生成的内容
您的密码:
public class C
{
public void M()
{
C c = new C();
int? result = c?.SomeMethod();
Console.WriteLine(result);
}
public int SomeMethod()
{
return 1;
}
}
生成的编译器代码:
public class C
{
public void M()
{
C c = new C();
int? num = c != null ? new int?(c.SomeMethod()) : null;
Console.WriteLine(num);
}
public int SomeMethod()
{
return 1;
}
}