3

今日、Reshaper を PC にインストールしてチェックしました。コードに次のステートメントがあるときはいつでも、比較するNull必要がないという情報を Resharper から受け取ります。なんで?

これは声明です:

if (dataGrid.ItemsSource != null && dataGrid.ItemsSource is DataGridCollectionView)

タイプが希望するタイプであるかどうか、および値がそうでないかどうかを確認していNullます。

値が still である可能性があっても、型が true である可能性があるため、これを求めるのは理にかなっていますNull。これに関するドキュメントに何か欠けているに違いないと思います。

null と比較する必要がないと Reshaper が言うのはなぜですか?

私は何が欠けていますか?

4

3 に答える 3

8

オブジェクトが nullの場合、is演算子は常に返さfalseれるため、型をテストする前に null をチェックする必要はありません。

ドキュメントから:

指定された式がnull 以外の場合、 is 式は true と評価され、例外をスローすることなく、指定されたオブジェクトを指定された型にキャストできます。

于 2013-11-04T10:44:02.657 に答える
3

dataGrid.ItemsSource is DataGridCollectionView「dataGrid.ItemsSource は」のインスタンスであることを意味しますDataGridCollectionView。それが(何かの)インスタンスである場合、null にすることはできないため、null チェックは冗長です。

于 2013-11-04T10:43:39.137 に答える
2

nullは常にテストfalseから戻るため、テストがまだ実行していないことをチェックが達成することはありません。これが誤動作する可能性がある唯一の非常識なエッジ ケースは、連続する呼び出しで異なるものを返すプロパティがある場合です。これは危険で自傷行為です。isnullis.ItemsSource.ItemsSource

于 2013-11-04T10:43:53.880 に答える