私は次のようなものを数回見ました...そして私はそれが嫌いです。これは基本的に言語を「だます」ことですか?それとも..常に IsNullOrEmpty が最初に評価されるため、これを「OK」と見なしますか?
(文字列が関数から出たときに NULL であるべきかどうかについて議論することはできますが、それは実際の問題ではありません。)
string someString;
someString = MagicFunction();
if (!string.IsNullOrEmpty(someString) && someString.Length > 3)
{
// normal string, do whatever
}
else
{
// On a NULL string, it drops to here, because first evaluation of IsNullOrEmpty fails
// However, the Length function, if used by itself, would throw an exception.
}
編集: この言語の基本を思い出させてくれた皆さんに改めて感謝します。「なぜ」それが機能するかはわかっていましたが、コンセプトの名前を知らなかった/覚えていなかったなんて信じられません。
(誰かがバックグラウンドを必要とする場合に備えて..コードのさまざまな場所で、NULL文字列と.Length> x例外によって生成された例外のトラブルシューティング中にこれに遭遇しました。したがって、上記のコードを見たとき、他のすべてに加えて、私の欲求不満はそこから引き継がれました。)