2010-03-16 101 views
3

我繼承了一個用C#編寫的使用'常量'(見下文)的小型基於窗體的程序,我需要修改這個程序,使'PROPERTY_NAME'可以是'jobs'和'career'。C#改變一個常量

private const string PROPERTY_NAME = "jobs"; 

我猜一個常數不是爲了改變而設計的,所以我需要改變它。上面的行在類文件的頂部設置一次,然後在整個文件中使用PROPERTY_NAME。

在主窗體上,我想添加兩個單選按鈕1(稱爲「作業」),一個稱爲「職業」,然後根據所選的類文件更改PROPERTY_NAME。我是否需要將單選按鈕狀態傳遞給類文件中的方法?我記得讀到我不能簡單地從類文件中讀取單選按鈕值。

非常感謝您的建議。

+2

矛盾。不變和變化不會在一起,永遠! – leppie 2010-03-16 11:47:24

回答

3

使一個枚舉(我的首選方式),並使其成爲一個只讀屬性。在構造函數中設置此屬性。創建後不可更改,應該做你需要的。

-sa

7

我最好的(也是最簡單)的猜測(我可以闡述爲更清潔的事情,但是這僅僅是速度)沒有看到代碼的任何其他部分將刪除const並添加readonly所以PROPERTY_NAME只是一個普通的舊類成員變量,不能在構造函數之外進行更改。

在類的構造函數中,接受一個字符串參數,並讓代碼在「jobs」或「careers」中創建此類pass的實例(可能來自所選單選按鈕)並設置變量PROPERTY_NAME variable 。

編輯:

像薩沙說,另一種方法是使用enum但要看到底是被用PROPERTY_NAME做了什麼,這是否是適合你的應用程序。

+0

是的我同意你可以創建一個正常的枚舉或只是一個字符串屬性,並分配值或者工作或職業,並在源代碼中使用該字符串.. – BreakHead 2010-03-16 12:37:25

0

你不能讓常數有兩個值。看起來您需要創建一個存儲當前屬性名稱的字段,並將其用於您的表單。你將能夠從單選按鈕啓動這樣的領域。

4

如果您所代表的數量代表整個宇宙歷史上的有史以來變化,那麼請不要使其成爲常數。常量就像一打雞蛋的數量或鉛的原子量。像版本號或黃金的當前價格隨時間變化,因此不是恆定只能將常量值變爲常量字段。編譯器會將常量字段視爲常量,如果它們發生更改,則會引入語義錯誤。