对基类的强制转换是否涉及装箱和拆箱

时间:2016-09-29 21:28:12

标签: c# derived-class base-class boxing unboxing

拥有以下课程:

public abstract class FieldElementBaseCL : FormElementBaseCL
{
    public FieldElementBaseCL(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement)
    {
        LinkedFieldID = linkedFieldID;
    }

    [DataMember]
    [Browsable(false)]
    public int LinkedFieldID { get; set; }

    [Browsable(false)]
    public LabelControl LabelComponent { get; set; }

    public abstract FieldElementDTOBase GetElementDTO();

}

[DataContract]
public class FieldElementNumberEditCL : FieldElementBaseCL
{
    public FieldElementNumberEditCL(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement, linkedFieldID)
    {

    }

    public override FieldElementDTOBase GetElementDTO()
    {
        FieldElementNumberEditDTOCL elementDTO = new FieldElementNumberEditDTOCL();

        return elementDTO;
    }
}

如您所见,有一条线创建FieldElementNumberEditCL类的实例。那么,GetElementDTO是否涉及装箱/拆箱,因为它的返回类型是FieldElementBaseCL

1 个答案:

答案 0 :(得分:4)

装箱和拆箱仅适用于价值类型。值类型是使用struct声明的值。您没有使用struct,而是使用class。因此,装箱/拆箱完全不适用于您。