C# List Find()引发Null异常,但应给出空字符串

C# List Find()引发Null异常,但应给出空字符串,c#,C#,在C#中,我有一个包含固定数量项的列表,精确地说是6项。它们在Razor模板中使用Find()调用。但是,如果该查找找不到关联的列表项,它将抛出NullReference异常 问题是,如果一个项目不存在,那么视图将不会加载 我需要它为变量提供一个空字符串 我试过: var video1 = Model.Videos.FirstOrDefault(x => x.VideoType == "Video1") ?? string.Empty; 但这仍然返回null 有人能帮上忙吗?它抛出了一个

在C#中,我有一个包含固定数量项的列表,精确地说是6项。它们在Razor模板中使用Find()调用。但是,如果该查找找不到关联的列表项,它将抛出NullReference异常

问题是,如果一个项目不存在,那么视图将不会加载

我需要它为变量提供一个空字符串

我试过:

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
null

Model或Videos为null时,不会引发
NullReferenceException
异常。提示:字符串的默认值是什么?它不是空字符串。或者模型或视频可能为null。我甚至不知道如何编译……
Videos
是obv以前是一个复杂的类,但不知何故,您将null合并到一个字符串?@Great.And.power.Oz Negative。它是在编译时计算出来的,而不是在运行时。
var
是安全的,非常棒。=)@TyCobb它不会简单地接受类型
对象
?模型或视频是空的线索:字符串的默认值是什么?它不是空字符串。或者模型或视频可以是空的。我甚至不知道如何编译…
视频
显然是一个复杂的类,但不知何故,您将空合并到字符串?@Great.And.power.Oz否定。它是在编译时计算出来的,而不是在运行时。
var
是安全的,非常棒。=@TyCobb它不是简单地接受类型
对象