台灣最大程式設計社群網站
線上人數
1017
 
會員總數:246203
討論主題:189774
歡迎您免費加入會員
討論區列表 >> C# >> 建構類別繼承進入點執行先後順序的寫法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
建構類別繼承進入點執行先後順序的寫法
價值 : 5 QP  點閱數:203 回應數:4
樓主

一人團
門外漢
0 2
31 4
發送站內信

Dear 先進們,

我想網路應該有很多,但我關鍵字找很久都找不太到想要的...
請教一個問題,
類別B繼承類別A,如何在建構類別B時,先執行類別B的進入點
做完再到類別A的進入點呢(程式碼如下)?謝謝


public class C_A
{
public C_A(string _Name, int _Number)
{
// 做A進入點的事情
}
}

public class C_B : C_A
{
public C_B(string _Name, int _Number)
: base(_Name, _Number)
{
// 以目前的寫法會
// 先做A進入點的事情
// 做B進入點的事情


// 如何可以現做B在做A ??
}
}



搜尋相關Tags的文章: [ 繼承 ] ,
本篇文章發表於2020-12-15 12:00
1樓
最有價值解答

春天
檢舉此回應
沒有辦法
頂多是這樣

本篇文章回覆於2020-12-15 15:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

一人團
檢舉此回應
感謝春天大大提供此方法,
這個方式有看過,但還不是我心目中最想要的,
如果真的沒比較直覺的方法,下面寫法可能會是比較適合一些,
但不管怎麼做都還是多少會破壞一些原本架構就是了!!

public class C_A
{
public C_A(string _Name, int _Number)
{
// 做A進入點的事情
_MethodA();
_MethodB();
}

public virtual void _MethodA() { }
public virtual void _MethodB() { }
}

public class C_B : C_A
{
public C_B(string _Name, int _Number)
// 註解掉這行
{
// 做B進入點的事情
// 可先做一些事情...
base._MethodA();
base._MethodB();
}

public override void _MethodA() { }
public override void _MethodB() { }
}
本篇文章回覆於2020-12-16 07:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
請注意區分在class C_B 中 Invoke base._MethodA() 和 _MethodA()的區別
本篇文章回覆於2020-12-16 09:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

一人團
檢舉此回應
好的,謝謝春天大大,
抱歉不是很熟用發問介面,
編輯傷眼請勿見怪!!
本篇文章回覆於2020-12-16 09:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.