【发布时间】:2020-01-27 01:17:51
【问题描述】:
问题描述
我正在使用 C# 8 和 Nullable 引用类型。
我使用这样的方法收到警告:
private IList<Person?> persons;
// some initialisations here....
IList<Person> GetPersons()
{
return someList.Where(t => t != null).ToList();
}
警告:
[CS8619] Nullability of reference types in value of type
'IList<Person?>' doesn't match target type 'IList<Person>'.
我还尝试了以下方法:
return someList.Where(t => t != null).Select(t => t!).ToList();
但是我得到了同样的警告!!
解决方案(不满意)
我发现的唯一解决方法是:
IList<Person> GetPersons()
{
return someList.Where(t => t != null).Select(t => Some(t)).ToList();
}
// THIS REMOVES THE WARNING
private Person Some(Person? person) => person!;
但是,如果我想让它成为通用的,它就不起作用....我再次收到警告,此方法返回 Person?
private T Some<T>(T? t) where T: class => t!;
【问题讨论】:
标签: c#-8.0 nullable-reference-types