Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Недвижимость | Ценность |
|---|---|
| Идентификатор правила | IDE0221 |
| Заголовок | Добавьте явное приведение |
| Категория | Style |
| Подкатегории | Языковые правила (предпочтения уровня выражений) |
| Применимые языки | C# |
| Параметры | dotnet_style_prefer_non_hidden_explicit_cast_in_source |
Обзор
Это правило помечает явные приведения типов в исходном коде, где компилятор вставляет дополнительные скрытые явные приведения. Видимые и скрытые приведения могут завершиться ошибкой во время выполнения по разным причинам. Если это правило отмечает такой код, рекомендуется явно добавить промежуточное приведение в исходный код, чтобы было ясно, что делает код.
Например, если вы пишете (Derived)x, где x является типом, для которого требуются два явных преобразования — сначала в базовый тип, а затем в производный тип — в исходном коде отображается только одно приведение. Компилятор вставляет промежуточное преобразование типов без каких-либо указаний в исходном коде. Это правило предполагает явное написание обоих приведения: (Derived)(Base)x
Опции
Параметры указывают поведение, которое вы хотите, чтобы правило применяло. Сведения о настройке параметров см. в разделе "Формат параметров".
dotnet_style_prefer_non_hidden_explicit_cast_in_source
| Недвижимость | Ценность | Описание |
|---|---|---|
| Имя параметра | dotnet_style_prefer_non_hidden_explicit_cast_in_source | |
| Значения параметра | true |
Предпочтительно сделать все промежуточные явные преобразования видимыми в исходном коде. |
false |
Не предпочитайте делать все промежуточные явные приведения видимыми в исходном коде. | |
| Значение параметра по умолчанию | true |
Пример
class Base { }
class Derived : Base { }
class Castable
{
public static explicit operator Base(Castable c) => new Base();
}
class C
{
void M()
{
// Code with violation: the compiler inserts a hidden (Base) cast.
var v = (Derived)new Castable();
// Fixed code: both casts are explicit in source.
var v2 = (Derived)(Base)new Castable();
}
}
Отключение предупреждений
Если вы хотите отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.cs]
dotnet_diagnostic.IDE0221.severity = none
Чтобы отключить все правила стиля кода, задайте уровень серьезности для категории Stylenone в файле конфигурации.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".