You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何解决父类PointVectorBase转子类Vector的隐式转换报错

问题原因

报错是因为CalculateSum方法返回父类PointVectorBase类型,而Add方法要求返回子类Vector类型,C#不支持父类到子类的隐式转换。由于此处CalculateSum返回的this本身就是Vector类型的实例,直接加显式强制转换即可,完全符合保留现有两个类实现逻辑的要求。

修改方案

只需要修改Vector类中Add方法的返回语句即可:

public Vector Add(params Vector[] addends)
{
    return (Vector)this.CalculateSum(addends);
}

补充说明:给出的PointVectorBase类代码中缺少X、Y、Z三个属性的定义,需补充后代码才可正常编译:

public class PointVectorBase
{
    // 补充属性定义
    public double X { get; set; }
    public double Y { get; set; }
    public double Z { get; set; }

    public PointVectorBase(double x=0 , double y=0 , double z=0 )
    {
        this.X = x;this.Y = y;this.Z = z;
    }
    // 原有剩余代码不变
}

修改后运行程序会输出(12, 24, 36),符合向量加法的预期结果。


内容的提问来源于stack exchange,提问作者Ahmed Ha. K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:06:06