我有类似这样的代码:
string s = CreateString();
if (s == "") foo(s);
如果 s 等于 "",则应调用 foo。如果字符串为 null,这种情况永远不会发生,那么 NullReferenceException 就可以了(因为这毕竟是一种异常情况)。
CodeAnalysis 告诉我要测试 s.IsNullOrEmpty。这会以一种意想不到的方式改变功能。
性能不是问题。
抑制相关的 CA1820 警告是否安全?
编辑:更新了代码示例和文本以更好地反射(reflect)我的情况。
编辑:这是(略有改动的)实际代码(在标准 IXmlSerializable 实现中):
public void ReadXml (XmlReader reader)
// ...
string img = reader.ReadElementString ("Image");
if (img != "") {
Image = Image.FromFile(img);
}
// ...
最佳答案
对于空值,它的行为会有所不同,所以这取决于你想要发生什么;你提到 NullReferenceException
没问题,但引用的代码中没有任何内容会引发此问题,因此它可能会导致下游出现意外错误。
我从来没有,但我总是想添加:
static bool IsNullOrEmpty(this string value) {
return string.IsNullOrEmpty(value);
}
所以我可以使用:
if (s.IsNullOrEmpty()) foo();
关于c# - 我可以安全地忽略 CodeAnalysis 警告 : replace string == "" with string. IsNullOrEmpty 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661024/