簡體   English   中英

轉換到基類是否涉及裝箱和拆箱

[英]Does casting to base class involve boxing and 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

裝箱和拆箱僅適用於值類型。 值類型是用struct聲明的類型。 您不是在使用struct ,而是在使用class 因此,裝箱/拆箱對您完全不適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM