假设我有一个基类
class baseClass
{ }
另一个继承自baseClass
class foo : baseClass
{ }
我试图直接将其强制转换(baseClass)foo
,但编译器说它无法完成。
foo
是否有办法只获取baseClass
?
答案 0 :(得分:5)
foo
baseClass
您不需要任何投射。你的代码应该没有任何问题:
var foo = new foo();
baseClass x = (baseClass) foo;
答案 1 :(得分:2)
如果您从班级 B 派生课程 A ,您可以随时引用 A ,就好像它是 B 。当然,在案件中并非如此。通常,您总是可以引用继承类的链。
答案 2 :(得分:1)
如果编译器抱怨这样的事情,那可能只是意味着你在几个Namespace中定义了几个baseClass,而你实际上没有引用正确的baseClass。
检查您的命名空间,它应该解决您的错误。
答案 3 :(得分: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;