簡體   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