Я читаю "С# через CLR" и на странице 380, там есть примечание, в котором говорится следующее:
Примечание. Класс Enum определяет метод HasFlag, определенный следующим образом:
public Boolean HasFlag(Enum flag);
Используя этот метод, вы можете переписать вызов Console.WriteLine следующим образом:
Console.WriteLine("Is {0} hidden? {1}", file, attributes.HasFlag(FileAttributes.Hidden));
Однако я рекомендую вам избегать метода HasFlag по этой причине:
Так как требуется параметр типа Enum, любое значение, которое вы передаете ему, должно быть в коробке, требующее выделения памяти. "
Я не могу понять это смелое утверждение - почему "
любое значение, которое вы передаете ему, должно быть в коробке
Тип параметра flag
- Enum
, который является типом значения, для чего нужен бокс? "Любое значение, которое вы передаете ему, должно быть в коробке" должно означать, что бокс происходит, когда вы передаете тип значения в параметр Enum flag
, правильно?