gpt4 book ai didi

c# - 显式转换的问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:57 24 4
gpt4 key购买 nike

我在 C# 中有一个继承自另一个产品类的产品类

using ExternalAssemb.ProductA;

public class MyProduct : ProductA
{
//....
}

我正在尝试从我引用的 DLL 中的 ProductA 进行显式转换,但它告诉我它无法转换

MyProduct myProduct = (MyProduct)productAobject;

结果::System.InvalidCastException:无法将“ExternalAssemb.ProductA”类型的对象转换为类型“MyAssembly.MyProduct”。

我做错了什么?

最佳答案

可以ProductA 引用转换为 MyProduct 引用,但只有它实际指向 MyProductA 或其子项。

您正在做的是试图像对待 child 一样对待 parent ,这是行不通的。相反,您可以像对待 parent 一样对待 child ,因为它就像 parent 一样。

考虑一个通用示例,其中基类称为 Shape 并具有子类,例如 SquareCircle。给定一个 Shape 引用,您可以将任何 child 分配给它。但是,如果引用引用的是 Circle,则不能将其转换为 Square。这是有道理的,因为所有圆都是形状,但没有圆是正方形。

希望示例有所帮助。

关于c# - 显式转换的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489657/

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