![](/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.