转换为 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完全不适合你。
低于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完全不适合你。