А если брать не интересные ошибки, а самые массовые и типичные, то что будет в ТОПе?
if (something is SomeType alias) {...}
V3080 и V3095 быть может благодаря nullable reference types в C#8 тоже когда-нибудь в необозримо отдалённом будущем…
Синтаксис и комментария выше не требует поддержки со стороны рантайма
if (string.IsNullOrEmpty(value))
{
_rawOuterXml = string.Empty;
}
_rawOuterXml = value;
В отрывке выше хорошо видно, почему в языках крайне полезен функциональный синтаксис.
В условных Kotlin/Scala код корректнее выглядит так, как ниже. А потому в нем сложнее забыть про отсутствие else, так как без else выражение просто не скомпилируется.
_rawOuterXml = if(string.IsNullOrEmpty(value))
{
string.Empty;
}
else
{
value;
}
Можно надеяться, что в C# добавят if-expression, по аналогии со switch-expression'ами в C# 8.
А чем тернарный оператор не угодил?
_rawOuterXml = string.IsNullOrEmpty(value) ? "" : value;
Я про сложные выражения. Для коротких Вы полностью правы — лучше использовать ?:, который, по сути, тоже является функциональным.
А вот если в каждой ветки условия необходимо сделать что-то еще, то тернарного оператора не хватает, а потому желательно использование функционального if`a.
Или перестать страдать ерундой и выделить кусок кода в отдельный метод.
Ну или, как вариант, просто перестать бояться писать слово else…
_rawOuterXml = value ?? "";
ТОП-10 ошибок, найденных в C#-проектах за 2020 год