Warum muss die HasFlag-Methode von Enum geboxt werden?

Ich lese gerade "C # via CLR" und auf Seite 380 finden Sie einen Hinweis, der Folgendes besagt:

Hinweis Die Enum-Klasse definiert eine HasFlag-Methode, die wie folgt definiert ist

public Boolean HasFlag(Enum flag);

Mit dieser Methode können Sie den Aufruf von Console.WriteLine folgendermaßen umschreiben:

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

Ich empfehle jedoch, dass Sie die HasFlag-Methode aus diesem Grund vermeiden:

Da es sich um einen Parameter vom Typ Enum handelt, muss jeder Wert, den Sie übergeben, in ein Kästchen gesetzt werden, was eine Speicherzuweisung erfordert . "

Ich kann diese kühne Aussage nicht verstehen - warum "

Jeder Wert, den Sie übergeben, muss mit einem Kästchen versehen werden

Dasflag Parametertyp istEnum, was ist ein Wertetyp, warum sollte es Boxen geben? Das Feld "Jeder Wert, den Sie übergeben, muss mit einem Boxing versehen werden" bedeutet, dass beim Übergeben des Wertetyps an den Parameter ein Boxing erfolgtEnum flag, Recht?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage