C# List Find()引发Null异常,但应给出空字符串
在C#中,我有一个包含固定数量项的列表,精确地说是6项。它们在Razor模板中使用Find()调用。但是,如果该查找找不到关联的列表项,它将抛出NullReference异常 问题是,如果一个项目不存在,那么视图将不会加载 我需要它为变量提供一个空字符串 我试过:C# List Find()引发Null异常,但应给出空字符串,c#,C#,在C#中,我有一个包含固定数量项的列表,精确地说是6项。它们在Razor模板中使用Find()调用。但是,如果该查找找不到关联的列表项,它将抛出NullReference异常 问题是,如果一个项目不存在,那么视图将不会加载 我需要它为变量提供一个空字符串 我试过: var video1 = Model.Videos.FirstOrDefault(x => x.VideoType == "Video1") ?? string.Empty; 但这仍然返回null 有人能帮上忙吗?它抛出了一个
var video1 = Model.Videos.FirstOrDefault(x => x.VideoType == "Video1") ?? string.Empty;
但这仍然返回null
有人能帮上忙吗?它抛出了一个
NullReferenceException
,因为您试图在null
对象上获取属性/调用函数
查看您的代码,我们正在调用模型上的视频
,然后在视频
上调用第一个或默认值
抛出的NullReferenceException
表示:
Model
为null,因此当调用Model.Videos
时,您会得到一个NullReferenceException
(因为您无法获取null的属性Videos
)
Videos
为空,因此当您调用Videos.FirstOrDefault
时,您会得到一个NullReferenceException
(因为您无法在null上调用函数FirstOrDefault
)
它抛出了一个NullReferenceException
,因为您试图在null
对象上获取属性/调用函数
查看您的代码,我们正在调用模型上的视频
,然后在视频
上调用第一个或默认值
抛出的NullReferenceException
表示:
Model
为null,因此当调用Model.Videos
时,您会得到一个NullReferenceException
(因为您无法获取null的属性Videos
)
Videos
为空,因此当您调用Videos.FirstOrDefault
时,您会得到一个NullReferenceException
(因为您无法在null上调用函数FirstOrDefault
)
您可以使用空传播运算符,如中所述
使用的一个例子是:
var video1=Model?.Videos?.FirstOrDefault(x=>x.VideoType==“video1”)?string.Empty;
上述操作将确保当模型
或视频
为空时不会引发空引用异常
。您可以使用中所述的空传播运算符
使用的一个例子是:
var video1=Model?.Videos?.FirstOrDefault(x=>x.VideoType==“video1”)?string.Empty;
以上内容将确保当Model
或Videos
为nullModel或Videos为null时,不会引发NullReferenceException
异常。提示:字符串的默认值是什么?它不是空字符串。或者模型或视频可能为null。我甚至不知道如何编译……Videos
是obv以前是一个复杂的类,但不知何故,您将null合并到一个字符串?@Great.And.power.Oz Negative。它是在编译时计算出来的,而不是在运行时。var
是安全的,非常棒。=)@TyCobb它不会简单地接受类型对象
?模型或视频是空的线索:字符串的默认值是什么?它不是空字符串。或者模型或视频可以是空的。我甚至不知道如何编译…视频
显然是一个复杂的类,但不知何故,您将空合并到字符串?@Great.And.power.Oz否定。它是在编译时计算出来的,而不是在运行时。var
是安全的,非常棒。=@TyCobb它不是简单地接受类型对象
?