![](/img/trans.png)
[英]Initializing base class member variables in the body of derived class's constructor
[英]Initializing Inherited Class Through Derived Constructor's Arguments (C#)
地狱,标题可能不是最好的,但是我是一个相当新的程序员,对继承类没有太多的经验。 我正在尝试初始化一个类(我自己的流是从常规FileStream类派生的),并且可以选择从派生的参数初始化基类。 例如...
public class Example : FileStream
{
public Example(FileStream FS) : base = FS
}
很显然,我不能仅仅做到这一点,但它最能显示出我想要做什么。 我这样做的主要原因是因为流相互矛盾-我的意思是,在该类中,另一个类自动打开文件(并进行一些读取等操作),并且引发异常,文件不可访问。 也许我做错了,但是感谢大家的宝贵时间!
你不能那样做,不。 但是对于Stream
,可以从Stream
派生,将FileStream
存储在一个私有字段中,并将所有方法调用传递给它:
public class Example : Stream
{
private Stream _underlying;
public Example(Stream underlying) { _underlying = underlying; }
// Do the following for all the methods in Stream
public override int Read(...) { return _underlying.Read(...); }
}
如果将文本光标移动到Example :
后面的Stream
一词,请按Alt + Shift + F10并选择“ Implement abstract class Stream”,它将为您生成所有方法声明,但是您仍然必须更改所有throw new NotImplementedException()
正确调用_underlying
。
如您所料,您在语法上犯了错误,可以为本示例提供帮助。
public class SomeClassA
{
public int foo1;
public string foo2;
public SomeClassA(int foo1, string foo2)
{
this.foo1 = foo1;
this.foo2 = foo2;
}
}
public class SomeClassB : SomeClassA
{
public SomeClassB(int arg1, string arg2)
: base(arg1, arg2)
{ }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.