我不知道这是否可能,但我正在尝试从派生类获取基类实例。在 C# 中,我可以使用base关键字来访问基类的属性和方法(当然),但我想使用base本身。尝试这样做会导致“在此上下文中使用关键字‘base’无效” error.
示例代码
public class SuperParent
{
public int SPID;
public SuperParent()
{
}
}
public class SubChild : SuperParent
{
public SubChild(int pSPID)
{
base.SPID = pSPID;
}
public int BaseSPID
{
get
{
SuperParent sp = base;
return sp.SPID;
}
}
}
如果您正在使用派生类的实例,则没有base instance
。
一个例子:
class A
{
public void Foo() { ... }
}
class B : A
{
public void Bar() { ... }
}
内有什么是不可能的B
:
public void Bar()
{
// Use of keyword base not valid in this context
var baseOfThis = base;
}
你可以这样做:
public void Bar()
{
base.Foo();
}
你可以添加另一种方法,例如
public A GetBase()
{
return (A)this;
}
然后你就可以
public void Bar()
{
var baseOfThis = GetBase();
// equal to:
baseOfThis = (A)this;
}
So this GetBase()
方法可能就是你想要的。
要点是:如果你有一个实例B
,它继承了所有属性和不可重写的行为A
,但它不包含以下实例B
它保存对实例的(隐藏但自动的)引用A
。你可以投射你的B
实例到A
,但它仍然是一个实例B
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)