![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 一人團 ![]()
![]() |
我想網路應該有很多,但我關鍵字找很久都找不太到想要的... 請教一個問題, 類別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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |