转换为 base class 是否涉及装箱和拆箱

Does casting to base class involve boxing and unboxing

低于classes:

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 class 的实例。那么,GetElementDTO 是否涉及 boxing/unboxing 因为它的 return 类型是 FieldElementBaseCL

装箱和拆箱仅适用于值类型。值类型是那些用 struct 声明的类型。您没有使用 struct,您使用的是 class。所以,boxing/unboxing完全不适合你。