我很困惑,为什么这是发生在我的应用程序。我有一个从Session存储中获得的对象,但是在某些情况下它可能不存在,所以我正在做一些三元检查。即使使用三元检查,我也会在userInfo上使用空引用异常进行错误检查。另一个奇怪的部分是,当我检查firstName和lastName时,它们都显示“???”。三元支票C#空参考例外
@{
// Session storage for user info
var userInfo = Session["UserInfo"] as UserInfo;
var firstName = userInfo != null ? userInfo.FirstName : "???";
var lastName = userInfo != null ? userInfo.LastName : "???";
}
<div>
@firstName @lastName // Errors here with object reference not set to an instance of an object. 'userInfo' was null
</div>
我疯了吗?我发誓,这是我可以检查无效问题的方法。
根据我的经验,当Visual Studio在Razor代码中识别出一条引发异常的行时,该异常实际上被抛出。 – Amy
不确定这是否有效,但三元检查使代码阅读,理解和维护变得复杂得多。 Var具有相同的效果。请使用[strong typing](https://en.wikipedia.org/wiki/Strong_and_weak_typing)。 – SneakyTactician
你在视图中做什么的任何原因? –