我喜欢尽可能使用枚举作为价值持有者,我喜欢它。它很容易使用,即放一个点,看看价值。这是一段时间内硬代码的很好替代。其他相当于枚举?
但它仍然有一些限制。我们不能将特殊字符放在值和其他值中。
其实我试图让代码可重用。请指导我。是否有一些技术或方法可以使用某些数据结构,比如灵活但没有限制的枚举。
我喜欢尽可能使用枚举作为价值持有者,我喜欢它。它很容易使用,即放一个点,看看价值。这是一段时间内硬代码的很好替代。其他相当于枚举?
但它仍然有一些限制。我们不能将特殊字符放在值和其他值中。
其实我试图让代码可重用。请指导我。是否有一些技术或方法可以使用某些数据结构,比如灵活但没有限制的枚举。
如果我不能使用一组枚举的预定义值,我使用一类静态常量。它们在使用中看起来几乎相同,但值可以是从小数到字符串到结构或类的任何值。我已经在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
我并不完全遵循你的例子限制*我们不能把特殊字符放在值和其他一些内容中*另外,如果你想要一些有*没有限制的东西*这有点模糊。也许列出你想要做的一切。会有一个类有很多常量/字段的窍门? –