我喜歡儘可能使用枚舉作爲價值持有者,我喜歡它。它很容易使用,即放一個點,看看價值。這是一段時間內硬代碼的很好替代。其他相當於枚舉?
但它仍然有一些限制。我們不能將特殊字符放在值和其他值中。
其實我試圖讓代碼可重用。請指導我。是否有一些技術或方法可以使用某些數據結構,比如靈活但沒有限制的枚舉。
我喜歡儘可能使用枚舉作爲價值持有者,我喜歡它。它很容易使用,即放一個點,看看價值。這是一段時間內硬代碼的很好替代。其他相當於枚舉?
但它仍然有一些限制。我們不能將特殊字符放在值和其他值中。
其實我試圖讓代碼可重用。請指導我。是否有一些技術或方法可以使用某些數據結構,比如靈活但沒有限制的枚舉。
如果我不能使用一組枚舉的預定義值,我使用一類靜態常量。它們在使用中看起來幾乎相同,但值可以是從小數到字符串到結構或類的任何值。我已經在GridViews中爲預定義的單元格顏色方案完成了這一操作,就像內置的Color類具有預定義的常量值一樣。數學和科學常數(如e和Pi)(如果您需要的數值不同於數學課程提供的數值)或重力加速度(9.8m/s)或光速(299,792,458m/s) ,也可以用這種方式指定。
如果您認爲您不能使用枚舉,因爲您需要存儲預定義的字符串值,請嘗試使用該系統的便利技巧。ComponentModel Description屬性:
public Enum MyStrings
{
[Description("This is string one")] StringOne,
[Description("This is a different string")] StringTwo,
...
}
要獲得字符串時,你只需檢查Description屬性,該代碼是有點混亂,但可以很容易地隱藏在一個擴展方法:
public static string GetDescription(this Enum enumValue)
{
object[] attr = enumValue.GetType().GetField(enumValue.ToString())
.GetCustomAttributes(typeof (DescriptionAttribute), false);
return (attr.Length > 0)
? ((DescriptionAttribute) attr[0]).Description
: String.Empty;
}
用法:
var stringOne = MyStrings.StringOne.GetDescription(); //"This is string one"
在這種情況下,您還可以考慮使用資源文件。字符串的值可以從程序範圍之外改變,而不需要重新編譯。
你可以使用常量;它們是不可變的,可以有任何價值。 參見:http://msdn.microsoft.com/en-us/library/ms173119.aspx
不知道到底是什麼,你需要(重:「特殊字符」),但你可以簡單地使用一些常量並把它們放入一個靜態類,如:
public static class MyConstants
{
/// <summary>documentation here</summary>
public const string ValueA = "somevalue";
/// <summary>documentation here</summary>
public const string ValueB = "something else with special characters &@";
// etc.
}
用法:你也許會枚舉和更特別的是常量找到
var x = MyConstants.ValueB;
聽起來像他之後... ... – 2011-08-04 15:32:14
的一個問題是,如果你改變它定義了枚舉或常量的源組件,但不重新編譯依賴程序,你最終會在源不匹配和依賴程序集。例如:
public const int myConst = 5;
您稍後更改爲:
public const int myConst = 10;
在源組件,其被重建,這是10.但是這5中的未重建任何依賴程序集。
爲了避免這種情況,請使用只讀而不是const。例如:
public readonly int myConst = 5;
這與const不同,它更像是一個C++ #define,它使值直接放在代碼中。只讀將導致在運行時查找,所以如果你不重新編譯你的依賴程序集,你仍然會得到正確的,更新的值。
eh .............? – saj
你能舉幾個例子說明你想做什麼「沒有限制嗎?」 – n8wrl
我並不完全遵循你的例子限制*我們不能把特殊字符放在值和其他一些內容中*另外,如果你想要一些有*沒有限制的東西*這有點模糊。也許列出你想要做的一切。會有一個類有很多常量/字段的竅門? –