Почему метод Enum HasFlag нуждается в боксе?
Я читаю "C # через CLR" и на странице 380 имеется примечание о следующем:
Note The Enum class defines a HasFlag method defined as follows
public Boolean HasFlag(Enum flag);
Using this method, you could rewrite the call to Console.WriteLine like this:
Console.WriteLine("Is {0} hidden? {1}", file, attributes.HasFlag(FileAttributes.Hidden));
However, I recommend that you avoid the HasFlag method for this reason:
Since it takes a parameter of type Enum, any value you pass to it must be boxed, requiring a memory allocation ."
Я не могу понять это смелое утверждение - почему & quot;
any value you pass to it must be boxed
flag
тип параметраEnum
, который является типом значения, почему будет бокс? «Любое значение, которое вы передаете ему, должно быть помечено в рамке» должно означать, что бокс происходит, когда вы передаете тип значения параметруEnum flag
, право?