У меня есть код, подобный этому:Могу ли я безопасно игнорировать предупреждение CodeAnalysis: заменить строку == "" на string.IsNullOrEmpty?
string s = CreateString();
if (s == "") foo(s);
Если s равен «», Foo должен быть вызван. Если строка является нулевой, что никогда не должно происходить, то исключение NullReferenceException прекрасно (поскольку это, в конце концов, исключительная ситуация).
CodeAnalysis говорит мне протестировать s.IsNullOrEmpty. Это изменило бы функциональность в нулевой последовательности.
Производительность не является проблемой.
Безопасно ли предотвращать связанное с ним предупреждение CA1820?
Редактировать: Обновленный образец кода и текст, чтобы лучше отразить мой случай.
Edit: Это (немного изменен) фактический код (это в стандартной IXmlSerializable реализации):
public void ReadXml (XmlReader reader)
// ...
string img = reader.ReadElementString ("Image");
if (img != "") {
Image = Image.FromFile(img);
}
// ...
Вам не хватает «этого» внутри круглой скобки, чтобы сделать метод расширением;) Так или иначе, я использовал это в течение длительного времени ... он просто читается намного лучше. – em70
Я уже добавил отсутствующее «это» в «oops I'm a muppet» edit ;-p –
Вы, британцы, и ваши афоризмы. Заставляет меня хотеть переехать в Великобританию. – tvanfosson