假设我有一个基类
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;