假设我有一个基类
class baseClass
{ }
另一个继承自那个的类baseClass
class foo : baseClass
{ }
我试图直接将其转换回来,(baseClass)foo
但编译器说它无法完成。
有没有办法从foo
只得到baseClass
?
假设我有一个基类
class baseClass
{ }
另一个继承自那个的类baseClass
class foo : baseClass
{ }
我试图直接将其转换回来,(baseClass)foo
但编译器说它无法完成。
有没有办法从foo
只得到baseClass
?
foo
是一个baseClass
你不需要任何铸造。您的代码应该可以正常工作:
var foo = new foo();
baseClass x = (baseClass) foo;
如果你从类B派生一个类A ,你总是可以引用A,就好像它是B一样。当然,这在 revese 的情况下是不正确的。一般来说,您总是可以参考继承类的链。
如果编译器抱怨这样的事情,那可能只是意味着你在几个命名空间中定义了几个 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;