我知道可以使用三元运算符(“?”)来检查值是否为null,如果它不是null,则进入“链式方法让我们调用它”。示例:Model?.FirstOrDefault();
为什么这不起作用?我想说“如果Model不为空,请调用FirstOrDefault方法,否则不要做任何事情”。得到此错误
System.NullReferenceException:'对象引用未设置为 一个对象的实例。'
System.Linq.Enumerable.FirstOrDefault(...)返回null。
答案 0 :(得分:1)
您无法执行此操作,因为string myVariable;
if (Model != null)
myVariable = Model.FirstOrDefault();
是Extension Method。
扩展方法使您可以向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们在扩展类型上被称为实例方法。
修复就是不使用只是语法糖的Null Conditional Operator。
ViewComponent
答案 1 :(得分:0)
通常我用过?用于将API数据提取的访问器设置为?表示该值可以为null。我认为这更像是你想做的事情:
if (String.IsNullOrEmpty(TableName.AttributeName))
{
FirstOrDefault();
}