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