Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA2248 |
| Заголовок | укажите правильный аргумент enum для Enum.HasFlag |
| Категория | Использование |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Как предложение |
| Применимые языки | C# и Visual Basic |
Причина
Тип перечисления, переданный в качестве аргумента вызову метода HasFlag, отличается от вызывающего типа перечисления.
Описание правила
Метод Enum.HasFlag принимает аргумент enum того же типа enum, что и экземпляр, в котором вызывается метод. Если это разные enum типы, необработанное исключение будет создано во время выполнения.
Устранение нарушений
Чтобы устранить нарушения, используйте один и тот же тип перечисления как для аргумента, так и для вызывающего объекта:
public class C
{
[Flags]
public enum MyEnum { A, B, }
[Flags]
public enum OtherEnum { A, }
public void Method(MyEnum m)
{
m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at runtime
m.HasFlag(MyEnum.A); // Valid call
}
}
Когда лучше отключить предупреждения
Не подавляйте нарушения для этого правила.