考虑以下 C# 代码片段:
public class Person
{
public int Id { get; set;}
public string? Name { get; set;}
public string? Description {get; set;}
}
List<Person>? _persons = new List<Person>();
// Something populates the _persons list;
//Use LINQ like this.
Person? person = _persons. Where (person=>person.Name == "someName").FirstOrDefault();
在 LINQ 中,会引发 CS8602 警告,因为 person.Name 有可能为 null。基于 Person 类,这绝对是可能的并且是预期的。 但是,在这种情况下,null 不等于“someName”,因此我不希望名称属性设置为 null 的记录无论如何都不会被返回。
是否有一种语法可以允许查询而不会出现此警告? 我正在使用 .Net 8 和 Visual Studio 2022。
谢谢
就个人而言,我在使用 LINQ 时总是防止出现空值。你永远不知道你的代码将来会是什么样子,它使它更加健壮。
Person? person = _persons.Where(person => (person.Name ?? "") == "someName").FirstOrDefault();
但是,如果您仍然想忽略 null 警告,可以使用 null-forgiving 运算符“!”
Person? person = _persons.Where(person => person.Name! == "someName").FirstOrDefault();