将继承的类向下转换为基类
本文关键字:转换 基类 继承 | 更新日期: 2023-09-27 18:18:07
假设我有一个基类
class baseClass
{ }
以及从该baseClass
继承的另一个类
class foo : baseClass
{ }
我试图直接将其转换回(baseClass)foo
但编译器说它无法完成。
有没有办法从foo
只得到baseClass
?
foo
是一个不需要任何强制转换的baseClass
。并且您的代码应该可以正常工作:
var foo = new foo();
baseClass x = (baseClass) foo;
如果你从类 B 派生一个类 A,你总是可以引用 A,就好像它是 B 一样。当然,在雷维斯案中并非如此。通常,您始终可以向下引用继承类的链。
如果编译器抱怨这样的事情,这可能只是意味着你在几个命名空间中定义了几个baseClass,而你实际上没有引用正确的baseClass。
检查您的命名空间,它应该可以解决您的错误。
这里有一个具有不同命名空间的工作示例
namespace BaseNameSpace
{
public class BaseClass
{
public string Name { get; set; }
}
}
namespace TestNameSpace.Class
{
public class TestClass : BaseClass
{
public string Address { get; set; }
}
}
用:
TestClass test1 = new TestClass();
BaseClass b = test1;
确保有正确的使用:
using BaseNameSpace;
using TestNameSpace.Class;