枚举到Enum拳击或只是类型铸造

时间:2016-12-03 21:10:44

标签: c# enums casting boxing

我想知道对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万次。

1 个答案:

答案 0 :(得分:2)

是的,该值已装箱。

第4.3.1节"拳击转换" the C# spec州:

  

装箱转换允许将值类型隐式转换为引用类型。存在以下装箱转换:

     

[...]

     
      
  • 从任何枚举类型到类型System.Enum
  •   
     

[...]