Dlaczego metoda EnFa HasFlag wymaga boksowania?
Czytam „C # przez CLR”, a na stronie 380 znajduje się notatka o następującej treści:
Uwaga: Klasa Enum definiuje metodę HasFlag zdefiniowaną w następujący sposób
public Boolean HasFlag(Enum flag);
Używając tej metody, możesz przepisać wywołanie Console.WriteLine w następujący sposób:
Console.WriteLine("Is {0} hidden? {1}", file, attributes.HasFlag(FileAttributes.Hidden));
Zalecam jednak unikanie metody HasFlag z tego powodu:
Ponieważ pobiera parametr typu Enum, każda przekazana wartość musi być zapakowana, wymagając przydziału pamięci . ”
Nie rozumiem tego pogrubionego stwierdzenia - dlaczego ”
każda przekazana wartość musi być zapakowana
Theflag
typ parametru toEnum
, który jest typem wartości, dlaczego miałby boks? „Każda wartość, którą do niej przekazujesz, musi być zaznaczona”, powinna oznaczać, że boks będzie miał miejsce, gdy przekażesz typ wartości do parametruEnum flag
, dobrze?