Por que o método HasFlag do Enum precisa de boxe?
Eu estou lendo "C # via CLR" e na página 380, há uma nota dizendo o seguinte:
Nota A classe Enum define um método HasFlag definido da seguinte forma
public Boolean HasFlag(Enum flag);
Usando esse método, você pode reescrever a chamada para Console.WriteLine desta forma:
Console.WriteLine("Is {0} hidden? {1}", file, attributes.HasFlag(FileAttributes.Hidden));
No entanto, eu recomendo que você evite o método HasFlag por esse motivo:
Como é necessário um parâmetro do tipo Enum, qualquer valor que você passar para ele deve ser encaixotado, exigindo uma alocação de memória "
Eu não consigo entender essa afirmação em negrito - por que "
qualquer valor que você passar para ele deve ser encaixotado
oflag
tipo de parâmetro éEnum
, que é um tipo de valor, por que haveria boxe? O "qualquer valor que você passar para ele deve ser encaixotado" significa que o boxe acontece quando você passa o tipo de valor para o parâmetroEnum flag
, certo?