台灣最大程式設計社群網站
線上人數
1986
 
會員總數:240902
討論主題:186660
歡迎您免費加入會員
討論區列表 >> C# >> 多個Class中如何建立一個共用變數, 但每個class中變數的值是不同的
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
多個Class中如何建立一個共用變數, 但每個class中變數的值是不同的
價值 : 200 QP  點閱數:540 回應數:36

樓主

James Cheng
門外漢
0 7
344 62
發送站內信



各位前輩好
小弟有些問題想請各位幫忙解惑
如下先將小弟製作的專案大致敘述一下
若需要程式碼我會再補上(因為有點多)

第1個class名為CreateFile
主要是接收值 如:public string XXX{get; set;}

另有3個class
名為Bank1 Bank2 Bank3都繼承CreateFile 如 class Bank1 : CreateFile......
內容主要撰寫method 讓我可以建立檔案
(總共有30幾個Bank class要寫, 而且每一個的規格都有所不同, 所以才分開來)

最後再Form1的button_click中new出Bank的物件
功能就完成了


可是現在需要多一個判斷的功能
每個Bank的都要給他一個獨立的代碼(暫時稱為BankCode)
最後再form1中做判斷是哪一個BankCode
進而呼叫其相對應的Bank class執行其method
"請問該如何建立一個變數能共用包含每個Bank的代碼"
再用如switch或if else來判斷


不知這樣敘述是否清楚
若有需要我會補上程式碼
自己摸索的有點久了
還是沒啥頭緒
請各位前輩能幫幫小弟!!!!
拜託了!!
謝謝~~~~~~~









搜尋相關Tags的文章: [ class ] , [ 共用變數 ] , [ 判斷 ] ,
本篇文章發表於2017-10-05 11:45
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

春天
檢舉此回應
1.在base Class建
2.用interface
本篇文章回覆於2017-10-05 12:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

春天
檢舉此回應
以你的需求建議是

本篇文章回覆於2017-10-05 12:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

CHShen
捐贈 VP 給 CHShen 檢舉此回應
這樣應該可以達成你的需求。

用法

本篇文章回覆於2017-10-05 12:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

James Cheng
檢舉此回應
回春天哥
這個方式我試過
可是請問接下來我要如何建立每個bank各有不同的代碼
然後在form1中用一個switch或if else來去判斷呢??

其實小弟本來已經可以直接判斷單一Bank且執行method

public class CreateFile
{
public string BankCode { get; set; }
==================================================

class Bank1 : CreateFile

new string BankCode = "01";
==================================================
form1中
Bank1 B1 = new Bank1();
B1.BankCode

switch (B1.BankCode)
{
case "01":
B1.CreateIn();
B1.CreateOut();
break;

但這樣就只能單一判斷Bank1而已
無法一次全部都判斷
switch(變數)不知道該怎麼寫
不然30幾個檔案
我就必須寫30幾個單一判斷
本篇文章回覆於2017-10-05 12:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
如果你30幾個Bank都有CreateIn()跟CreateOut()方法,何不使用interface?或是寫在CreateFile看是子類別用override還是CreateFile用abstract
本篇文章回覆於2017-10-05 12:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

James Cheng
檢舉此回應
春天哥
我知道可以這樣寫
可是因為createin跟createout這兩種方法的內容會有些不同
所以我才分開寫

現在在研究春天哥建議的interface與CHShen大的code中....
本篇文章回覆於2017-10-05 15:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

James Cheng
檢舉此回應
回CHShen大
請問您的方式到form中該怎麼寫判斷呢??
例如switch()<===中的變數應該帶入哪個??
本篇文章回覆於2017-10-05 15:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

James Cheng
檢舉此回應





本篇文章回覆於2017-10-05 16:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

James Cheng
檢舉此回應
如上是CreateFile與Bank1的程式碼
Bank class都大同小異
只有***的部分會有不同且需要有分別是哪間Bank
所以才分開來寫
本篇文章回覆於2017-10-05 16:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

春天
檢舉此回應

本篇文章回覆於2017-10-05 16:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

Zeeman
檢舉此回應
你的分類已經出現問題了
Bank是代表銀行(名詞),CreateFile是代表建檔的行為動作(動詞)


依你的情況,我猜想你的BankCode是必要指定的項目
資料的部份也可以獨立出來
沒有全面去看你的行為跟做法,初步分類如下

獨立出資料的部份


銀行的父類別


各銀行


實作


本篇文章回覆於2017-10-06 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

Zeeman
檢舉此回應
另外
BaseClass可以加上public,這樣外部委派也可以拿來用

實作

本篇文章回覆於2017-10-06 10:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

James Cheng
檢舉此回應
春天哥
12萬分的感謝你
讓程式碼更簡潔 更好維護

我先試做一個Bank1
能夠正常建立檔案
最後小弟目前遇到的問題依舊仍無法解決
如下 :



若無法取到變數的話
我再多Bank2 Bank3都沒辦法做判斷
或是我寫的方式有誤呢??
本篇文章回覆於2017-10-06 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

春天
檢舉此回應
protected string _BankCode { get; set; }
改成
public string _BankCode { get; protected set; }
本篇文章回覆於2017-10-06 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

Zeeman
檢舉此回應
補充
加入BaseCode的判別實作

本篇文章回覆於2017-10-06 12:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

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