如何装箱物品(例如从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}},时间变量是错误的。
答案 0 :(得分:2)
你做不到。您无法在.NET中更改对象的类型。创建后,类型是固定的。 B
对象在您创建时为B
,现在为B
,在收集之前它将继续为B
。
如果您需要A
,则需要制作A
。