请参见此示例:
var list = new List<string?>();
foreach (string item in list.Where(i => i != null))
{
if (item.Length == 2)
{
...
}
}
在此示例中,我在两个地方获得了可能的空引用。的Foreach
变量和解除引用的长度
在if
。第二个我可以很容易地通过添加一个像这样的该死的(空原谅)运算符来修复:项目!。长度
有没有办法对第一个做同样的事情?我知道我可以将其标记为可为空的字符串,并再次检查,但是,我已经检查过了。
使用Where
应用筛选时,可以消除所有空值,但这不会更改值的类型
您只需将筛选后的结果强制转换为正确的类型:
foreach (string item in list.Where(i => i != null).Select(x => x!))