2011-05-19 116 views
0

我碰到this博客文章,我只是好奇。我通常總是在我的應用程序中爲我的共享字符串使用constants枚舉爲字符串或字符串常量

我想知道你以前的做法的利弊是什麼?

+2

你的字符串常量是通過一些序列或集相互關聯的嗎?如果沒有,請不要使用枚舉。 – BoltClock 2011-05-19 20:45:05

+0

他們可以暗示這種關係。整數的枚舉不需要依次相關。 – slandau 2011-05-19 20:46:04

+0

如果您使用.net 4,請使用已存在的描述,請勿重新發明輪子:) – 2011-05-19 20:47:17

回答

5

我會堅持字符串常量,因爲它們很簡單,不需要任何反射來獲取值。

2

那裏的方法使用反射來提取字符串值。如果你正在做一些關鍵性能的事情,不惜一切代價避免這種情況......如果你想要速度的話,常量是要走的路。

更重要的是,使用該方法會嚴重傷害編譯器優化器,因爲每個「常量」現在都變成了「方法調用」。

+0

這就是我所猜測的。儘管我猜想它是獨一無二的。 – slandau 2011-05-19 20:47:14

+0

它可能是獨一無二的,但是當你開發時你必須利用的是'專業'和'對比'。唯一性既不是。 – 2011-05-19 20:51:20

2

這在很大程度上取決於您正在存儲什麼類型的字符串。

如果是向用戶顯示的文本,那麼您不應該首先使用常量。只讀字段更好,資源也更好。

我在建議的解決方案中看到的主要缺點是它會非常不直觀:當我看到字符串常量或字段的用法時,我立即知道發生了什麼。如果我看到SomeEnum.SameValue.GetStringValue(),我會認爲它幾乎可以做ToString()會做的事情,而不是一些有趣的事情。

此外,使用這樣的反射會慢得多,但這對你並不重要。