繁体   English   中英

具有值类型的C#装箱

[英]c# boxing with value types

来自c ++背景,我总是对valuetypes感到困惑。 如果在值类型上调用构造函数,是否总是导致装箱? 例如,

public struct myvaltype
{
    public int x;
    public int y;


    public myvaltype(int thisx,int thisy)
    {
        x = thisx;
        y = thisy;
    }

}

myvaltype tsts1 = new myvaltype();
myvaltype tsts2 = new myvaltype(8, 9);

这两个构造函数调用都会导致装箱吗? 如果是,那么避免装箱的唯一方法是手动设置每个成员对象(x,y)?

不, 这里没有拳击

装箱是将值类型转换为类型对象或该值类型实现的任何接口类型的过程。

来自装箱和拆箱(C#编程指南)

您不是在(隐式或显式地)将值类型转换为object或接口。

如果您的构造函数如下所示,将会进行装箱(和拆箱):

public myvaltype(object thisx, object thisy)
{
    x = (int)thisx;
    y = (int)thisy;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM