【发布时间】:2016-09-30 21:00:35
【问题描述】:
我有这个习惯:
try
{
CurrentSessionName = SelectedSession?.Name ?? "No Session Selected";
CurrentSessionTolerance = SelectedSession?.Tolerance.ToString() ?? "N/A";
CurrentSessionVerification = SelectedSession?.Verification.Description ?? "N/A";
}
catch (Exception ex)
{
var whatever = ex.GetType(); // hits here with no provided information
Console.WriteLine("Null Reference Exception"); // ignores this
string name = SelectedSession?.Name; // and this
}
那么为什么即使SelectedSession 不为 Null,它仍然会抛出 NullReferenceException 错误?
【问题讨论】:
-
您是否尝试在发布模式下进行调试?
SelectedSession.Tolerance和SelectedSession.Verification也可以为空。 -
好吧
SelectedSession不会抛出,因为您使用的是它的空传播。SelectedSession.Tolerance或SelectedSession.Verification呢? -
@FirstStep,在 null 上调用
.ToString()当然会抛出异常。访问空对象的属性也是如此。 -
总有
null在某处。只需要找到它。 -
您的问题很有趣,但由于它都是关于 NRE 的,它总是会作为关于该主题的规范问题的重复而被关闭。我已经更改了您的问题,以便对我提供的答案有意义 - 我 100% 肯定将来会帮助更多人。
标签: c# nullreferenceexception null-coalescing-operator