私はこれに似たコードを持っています:
string s = CreateString();
if (s == "") foo(s);
s が "" の場合、foo を呼び出す必要があります。string が null の場合 (これは決して起こらないはずです)、NullReferenceException は問題ありません (結局のところ、これは例外的な状況であるため)。
CodeAnalysis は、s.IsNullOrEmpty をテストするように指示します。これにより、意図しない方法で機能が変更されます。
パフォーマンスは問題ではありません。
関連する CA1820 警告を抑制しても安全ですか?
編集:私のケースをよりよく反映するために、コードサンプルとテキストを更新しました。
編集:これは(わずかに変更された)実際のコードです(標準の IXmlSerializable 実装にあります):
public void ReadXml (XmlReader reader)
// ...
string img = reader.ReadElementString ("Image");
if (img != "") {
Image = Image.FromFile(img);
}
// ...