どちらの例も同じ状況で成功または失敗し、成功した場合の動作は同じになります。
それらが失敗した場合、結果はわずかに異なります: 2 番目の例は (キャスト時に) 少し早く失敗し、より具体的な例外 ( InvalidCastException
vs. NullReferenceException
) があります。
主な利点はデバッグです。失敗した場合、最初の例よりも 2 番目の例の方が、失敗した理由についてより多くの情報を得ることができます。具体的には、PropertyIdentifier がnull
vs. non-string
の場合、2 番目のケースではわかりますが、最初のケースではわかりません。
また、 にいる場合は、ケースとは別のコード パスでtry/catch
非ケースを処理できます。ただし、おそらくこの方法でコーディングするべきではありません。もしそうなら、別のことをしているのです。string
null
さまざまなケースで次のコードをステップ実行すると、状況を明らかにするのに役立つ場合があります。
var propertyI = lstProperty[i];
var propertyIdentifier = propertyI.PropertyIdentifier;
// pick one of these:
var propertyIdentifierAsString = propertyIdentifier as string;
var propertyIdentifierAsString = (string)propertyIdentifier;
if (propertyIdentifierAsString.CompareTo("Name") == 0)