2012-04-25 1 views
9

簡単な質問をすることができたとき。どちらもnullでもかまいません。C#の速記は()の両方の引数がnull

私はこの嫌になるほど繰り返す必要があります。

if ((left == null && right == null) || (left != null && left.Equals(right)) { 

} 

またはそのような状況のためのよりエレガントなイディオムはありますか?

答えて

22

うん:それは静的メソッド呼び出しだということが明らかにせずに

if (object.Equals(left, right)) 

かさえ:

if (Equals(left, right)) 

を(個人的に私はしかし、余分な明瞭さを好む。)

静的object.Equalsメソッドは非常に良い文書を持っていませんが、あなたが望むものを正確に行います:)

+0

私はこの例を見て、本当に望んでいることを確かめなければなりませんでした:-) – Joey

+0

私は好奇心が強いのですが、2番目の例はなぜコンパイルされますか? –

+4

@KendallFrey:私はその質問を理解していません。なぜあなたはそれをコンパイルすべきではないと思いますか? –

関連する問題