2012-09-12 19 views
2

我需要檢查我的某個組件中的某個版本。出於這個原因,我只是想介紹一個我可以測試的公共const int。使用const作爲版本號

但是,我剛剛在SO帖子When, if ever, should we use const?中看到,當將來某些事情發生變化時,使用const可能是一個壞主意。

這樣做的最佳方法是什麼?使用public readonly int?使用屬性?我無法使用AssemblyVersion或AssemblyFileVersion,因爲那些不在我手中...

謝謝!

+0

'這些都不是我的hand',對不起,究竟是什麼你的意思? –

+0

你能解釋一下爲什麼你不能使用AssemblyVersion等等,它們就是這樣,當然如果你發佈一個程序集的新版本,那麼你可以控制它。 –

+0

我可能比它實際存在的內容更多地閱讀它,但是當我閱讀OP的帖子時,我感覺到他的組件正被其他組件中的其他組件使用。然而,爲了一起玩,他的組件需要檢查兼容性的能力。如果我是對的,我同意下面的Bart,並且沒有看到使用const來達到這個目的的問題。 – Kevin

回答

3

我會使用const(實際上,我確實使用它)。 readonly在運行時初始化,實際上,每次運行應用程序時它都可以有不同的值[1]。由於這個原因,我認爲這對於版本號來說不太有用。

版本號是(應該是?)在編譯時硬編碼,這將是const。比較可以是C中的#define

我認爲由於這種差異,const不使用數據存儲器,因爲readonly會這樣做。但我沒有這方面的資料。

[1] http://en.csharp-online.net/const,_static_and_readonly

+0

'readonly'不必是靜態的,因此使用的內存與'const'不同(它就像內存中的靜態字段一樣)。 – Bartosz

+0

這只是當我讀其他SO貼時,我得到的印象是,如果我增加我的const並交換我的DLL其他程序集可能仍然使用舊的const值... – Dunken

+0

@Dunken,我不知道這是否會案子。但是這很容易測試。 –