gpt4 book ai didi

c# - 向上转型相关——类转换

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:38 25 4
gpt4 key购买 nike

我有一个类,例如:

 class BaseDataPoint
{
public double A;
public double B;
}

稍后在代码中,我需要将其扩展到

 class ReportDataPoint : BaseDataPoint
{
public double C;
}

由于上面只是一个例子,还有更多的字段要复制,是否可以(通过一些技巧)将 BaseDataPoint 实例“转换”为 ReportDataPoint 而无需逐字段手动复制?

如果我有

 BaseDataPoint p1;
...
ReportDataPoint p2=(ReportDataPoint)p1; // FAILS at runtime
ReportDataPoint p3=new ReportDataPoint(p1); // can't compile

最佳答案

您不能更改实例的类型;您需要创建一个新实例。此外,您不能为此使用强制转换语法,因为您不允许在继承链中添加自定义运算符。

所以;添加手动转换(通过添加像您的示例这样的构造函数或 ComvertTo 方法)- 或者有一些库可能会有所帮助(也许是 AutoMapper,一些序列化链接也可能有帮助)。

关于c# - 向上转型相关——类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com