Box对象并且意图丢失不必要/额外的数据?

时间:2016-01-09 17:22:09

标签: c# class boxing unboxing

如何装箱物品(例如从B型打包到A型)并且意图丢失额外的数据?

示例:

google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) {
        return function() {
            closeLastOpenedInfoWindow();
            infowindow.setContent(content);
            infowindow.open(map, marker);
            lastOpenedInfoWindow = infowindow;
        };
    })(marker, makrerdata[i], infowindow));
}


function closeLastOpenedInfoWindow() {
    if (lastOpenedInfoWindow) {
        lastOpenedInfoWindow.close();
    }
}

在此示例中,我创建了一个class A { private string a; private DateTime time; public A(string a) { this.a = a; this.time = DateTime.Now; } } //... class B:A { private string b; public B(string a, string b):base(a) { this.b = b; } } //... B b1 = new B("A", "B"); A a1 = (A)b; // Still has variable b ,然后将其装入B。新的A仍然保存了A变量,因为实际上它指向b对象。

我知道我可以使用来自B的旧数据创建新的A,但是(在此示例中)如果我使用{{1}的旧数据调用B的构造函数1}},时间变量是错误的。

1 个答案:

答案 0 :(得分:2)

你做不到。您无法在.NET中更改对象的类型。创建后,类型是固定的。 B对象在您创建时为B,现在为B,在收集之前它将继续为B

如果您需要A,则需要制作A