繁体   English   中英

我应该在此用例中使用哪些C#集合?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM