2017-08-06 55 views
1

我有一些在多個類中需要的常量字符串。如何以符合以下要求的標準存儲和檢索這些常量:我在哪裏可以將共享常量放在C#應用程序中?

  1. 沒有重複信息。
  2. 沒有函數調用來檢索常量。
  3. 之前不斷沒有命名空間符號(IE:ConstantNamespace.Constant)我發現到目前爲止,滿足每一個標準的解決方案

無:

  1. 複製他們在每個班級,他們需要(違反標準#1)。
  2. 將它們存儲在一個獨立的靜態類中,該靜態類在需要時被引用(有點像C風格的頭文件,違反標準#3)。
  3. 將它們放入其中一個使用它們的類中,並在其他地方需要時引用該類(這似乎是一個壞主意,因爲它可能會創建循環引用,並且違反標準#3)。
  4. 將它們放在app.config中,並在需要時檢索它們(這似乎違反了風格約定,因爲非配置數據存儲在配置文件中,並且對配置文件的更改可能會破壞應用程序邏輯。標準#2)。

C#中是否存在符合每個標準的解決方案?

回答

3

我經常使用選項#2,因爲#1充滿了不同值的風險,#3打破了通常尋求的類封裝。如果你必須有全局變量。他們有一個單一的真理來源。

您可以用using別名使代碼有點清潔:

using static namespace.StaticClassName; 
+0

選項#2需要多餘的代碼的任何地方常量,則需要('StaticClass.Constant'而不只是'Constant')。有沒有辦法解決這個問題? – slbelden

+2

@slbelden如果你使用的是C#6(VS 2014或更新版本),那麼是的。你可以在你的文件的頂部使用靜態的YourNamespace.StaticClass。然後它使得'StaticClass'的所有靜態成員的行爲就好像它們處於該文件的範圍內一樣。 –

+0

歡迎來到OOP;)當然有兩種使用方法。在#1中分配#2的值。我也更喜歡#2,但它主要是基於意見的...... –

0

VB.Net有Module Statement可用於可以不使用模塊的名稱來訪問全局變量,但是C#沒有按沒有這樣的事情。

在C#中我使用#2,但使用const。這樣,當你在Visual Studio中盤旋它的價值所示:

enter image description here

+0

OP的問題是關於C#的。 – TomServo

相關問題