¿Por qué el método HasFlag de Enum necesita boxeo?

Estoy leyendo "C # via CLR" y en la página 380, hay una nota que dice lo siguiente:

Nota La clase Enum define un método HasFlag definido de la siguiente manera

public Boolean HasFlag(Enum flag);

Usando este método, podría reescribir la llamada a Console.WriteLine de la siguiente manera:

Console.WriteLine("Is {0} hidden? {1}", file, attributes.HasFlag(FileAttributes.Hidden));

Sin embargo, te recomiendo que evites el método HasFlag por esta razón:

Dado que toma un parámetro de tipo Enum, cualquier valor que le pase debe estar encuadrado, lo que requiere una asignación de memoria . "

No puedo entender esta declaración en negrita, ¿por qué "

Cualquier valor que se le pase debe estar en caja.

losflag tipo de parámetro esEnum, que es un tipo de valor, ¿por qué habría boxeo? El "cualquier valor que le pase debe estar encuadrado" debe significar que el boxeo ocurre cuando pasa el tipo de valor al parámetroEnum flag, ¿derecho?