[英]What C# collection should I use for this use case?
http://www.dreamincode.net/forums/user/335389-sergio-tapia/
我是Helper组,当前还有其他组。 我想将所有可能的组写到C#类中,然后在将来创建其他组时,我只修改该“组集合”。
我的问题是,此用例应使用哪种C#结构?
编辑:更改了问题和一些正文以求清楚。
更改枚举很麻烦,但是可以在有限的范围内完成。 考虑:
public enum SomeColors
{
Black,
blue,
red
}
如果这样做,则编译为使用SomeColors.blue
另一个程序SomeColors.blue
将中断:
public enum SomeColors
{
Black,
Green,
blue,
red
}
因为它将被编译为1
的值,所以它现在是SomeColors.Green
的值,而SomeColors.blue
现在是2
。
另外,如果我们要更改第一个以使整个字母大小写相同,则可以:
public enum SomeColors
{
Black,
Blue,
Red
}
这样,运行的代码仍然可以使用,但是重新编译会出现编译器错误,因为SomeColors.Blue
无法使用。 同样, Enum.Parse
(在这种情况下,取决于区分大小写的设置)将根据正在运行的代码可用的SomeColors版本来工作。
但是,增加价值并不是一个重大变化。 如果我们采用第一个并将其更改为:
public enum SomeColors
{
Black,
blue,
red,
green
}
这样,所有现有代码都可以,但是除非与Enum.Parse
找到,否则当然不了解green
。
因此,如果您只打算添加,并且可以依靠没有人尝试Enum.Parse
,则可以Enum.Parse
最新版本的字符串,那么它将起作用。
const
值也是如此。
如果需要使用版本来更改值,则应使用:
public static class SomeColors
{
public static readonly int Black = 0;
public static readonly int Blue = 1;
public static readonly int Red = 2;
}
由于这些不是常量,而是静态分配的字段,因此将在类中使用它们,而不是对其进行编译,并且对类的更改将更改使用的内容。 在某些情况下,可以通过使它们成为属性而不是字段来提供更高的安全性; 最值得注意的是,如果您将来想使用计算所得的属性,那么如果它们当前是字段,则不是一项重大更改,如果它们已经是属性,则将是一个巨大的变化。
如果希望这些值在运行时是动态的,则需要一个带有索引器的类,该索引器接受一个字符串并返回一个整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.