我想知道对Enum的投射是否会包含枚举
因此,我应该编写表达式身体成员来减少对象的大小。
public Fruit FruitType => (Fruit) Type; // unboxing?
public override Enum Type => (Fruit) (Data[0] & 0xF0); // boxing?
或者有防止拳击和拆箱的财产?
public Fruit FruitType => (Fruit) (Data[0] & 0xF0);
public override Enum Type { get; } = (Fruit) (Data[0] & 0xF0); // assigned once.
假设我有数千个实例。这个属性使用了大约6万次。
答案 0 :(得分:2)
是的,该值已装箱。
第4.3.1节"拳击转换" the C# spec州:
装箱转换允许将值类型隐式转换为引用类型。存在以下装箱转换:
[...]
- 从任何枚举类型到类型
System.Enum
。[...]