如果声明与关键字和比较为空

dev*_*hog 3 .net c# null typechecking

我今天在我的电脑上安装了Reshaper来检查它,每当我在我的代码中有以下声明时,我从Resharper得到一个信息,比较Null没有必要.为什么?

这是声明:

if (dataGrid.ItemsSource != null && dataGrid.ItemsSource is DataGridCollectionView)
Run Code Online (Sandbox Code Playgroud)

我正在检查类型是否是我想要的类型,如果值不是Null.

我要求这样做是有道理的,因为尽管值可能仍然存在,但类型可能是真的Null.我想我必须在关于此的文档中遗漏一些东西.

为什么Reshaper说我不需要比较null?

我错过了什么?

p.s*_*w.g 8

is操作将始终返回false如果对象为空,所以你不需要测试类型之前检查null.

文档:

如果提供的表达式为非null,则is表达式求值为true ,并且可以将提供的对象强制转换为提供的类型,而不会引发异常.