One*_*rce 13 .net c# inheritance base-class derived-class
我不知道这是否可行,但我试图从Derived Class中获取Base Class实例.在C#中,我可以使用base关键字来访问Base Class的属性和方法(当然),但我想使用base本身.尝试这样做会导致"使用关键字'base'在此上下文中无效"错误.
示例代码
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ten 17
如果您正在使用派生类的实例,则没有base instance.一个例子:
class A
{
public void Foo() { ... }
}
class B : A
{
public void Bar() { ... }
}
Run Code Online (Sandbox Code Playgroud)
什么是不可能的B:
public void Bar()
{
// Use of keyword base not valid in this context
var baseOfThis = base;
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
public void Bar()
{
base.Foo();
}
Run Code Online (Sandbox Code Playgroud)
你可以添加另一种方法
public A GetBase()
{
return (A)this;
}
Run Code Online (Sandbox Code Playgroud)
然后就可以了
public void Bar()
{
var baseOfThis = GetBase();
// equal to:
baseOfThis = (A)this;
}
Run Code Online (Sandbox Code Playgroud)
所以这种GetBase()方法可能就是你想要的.
重点是:如果你有一个实例B,它继承了所有属性和非重写行为A,但它不包含一个实例,B其中包含一个(隐藏但自动)的实例引用A.您可以将B实例转换为A,但它仍然是一个实例B.
| 归档时间: |
|
| 查看次数: |
32231 次 |
| 最近记录: |