0

假设我有一个基类

class baseClass
{  }

另一个继承自那个的类baseClass

class foo : baseClass
{  }

我试图直接将其转换回来,(baseClass)foo但编译器说它无法完成。

有没有办法从foo只得到baseClass

4

4 回答 4

5

foo 一个baseClass你不需要任何铸造。您的代码应该可以正常工作:

var foo = new foo();
baseClass x = (baseClass) foo;
于 2013-06-13T12:38:23.510 回答
2

如果你从类B派生一个类A ,你总是可以引用A,就好像它是B一样。当然,这在 revese 的情况下是不正确的。一般来说,您总是可以参考继承类的链。

于 2013-06-13T12:41:08.400 回答
1

如果编译器抱怨这样的事情,那可能只是意味着你在几个命名空间中定义了几个 baseClass,而你实际上没有引用正确的 baseClass。

检查您的命名空间,它应该可以解决您的错误。

于 2013-06-13T12:41:19.087 回答
0

这是一个具有不同命名空间的工作示例

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;
于 2013-06-13T12:41:29.600 回答