2012-03-23 110 views
1

我在項目中添加了一些常量。將常量變量更改爲靜態變量

private const int refercePosition = 0.3; 

我將常量轉移到我的項目的設置文件(即進入App.config),現在在我的項目中使用。

private static int refPos = Properties.Settings.Default.referencePosition; 

這是一個很好的做法,將變量作爲靜態而不是常量來表示嗎?
我的項目中還有大約10個其他常量,我也這樣做了。

順便說一句,因爲App.config變量是運行時可配置的,但是聲明變量爲靜態失敗的目的?

+1

你也可以用一個'get'訪問器來創建一個靜態屬性。 – 2012-03-23 05:17:52

+0

如果最初聲明爲'const',那麼您應該在聲明中添加'readonly'修飾符。 – dlev 2012-03-23 05:26:21

回答

2

它不是一個替代品下降,因爲現在refPos可以在運行時修改。如果這是您的目的,那麼很好,否則

private static readonly int refPos = Properties.Settings.Default.referencePosition; 

使refPos在運行時只讀。更接近const的性質。您可能還想查看singleton pattern

1

主要區別在於const不能在運行時更改,但靜態屬性可以在運行時由應用程序更改。 因此,如果值不會改變它可以是一個const ...

1

常量本質上是靜態的,從const所以轉換爲static readonly的情況並不少見,在那裏你可以不聲明值作爲運行時間不變的情況了。另請注意,只有User範圍設置可在運行時更改。如果這些設置爲Application作用域,則不會有區別。如果您打算使用User作用域設置,我建議您直接在代碼中使用它們,因爲如您所說,那麼可以在運行時更改。

0

當靜態而不是常量?
當值不可能發生變化時,或者如果沒有外部應用程序/庫將使用該常量時,應使用常量。當需要運行時計算時,或者如果外部消費者是一個因素,應該使用靜態只讀字段。