2013-06-19 41 views
1

這裏是我的終極目標:我想有輸出,不管以何種整數的程序註冊工具名稱的方式。例如,如果程序找到整數1001,1002和1003,那麼程序會告訴用戶找到了工具1,工具2和工具3。我應該使用枚舉類或查找在C#

我已經得到了這個使用所有的「工具」進行編號和對應於正確的整數簡單枚舉類的工作。我甚至可以輸出枚舉作爲名稱,但我想輸出一個字符串,最好是一個可以輕鬆編輯的字符串,而不必更改整個程序。如果我現在可以將它全部編程爲工具1,工具3和工具7,然後返回,並在實際知道我正在使用的工具時更改字符串,那就太好了。

我也已經試着用這個枚舉來使用DescriptionAttribute,但是即使在幾個問題的幫助下,我也無法弄清楚如何查找整數的枚舉,然後輸出Description那個Enum。我可以做或者,但不能兩個都幹。

所以這使我想知道如果有,我可以應付這一切除了使用枚舉類,這是我所聽到的不是在C#作爲有用的更好的方法。我只想知道關於如何使用enum類或c#中的其他方法來實現此目的的任何建議。

只要讓我知道,如果我需要共享,我已經有我的工作代碼。謝謝!

+1

是否有對'辭典'和適當的'Tool.ToString()'說? – Vlad

+0

只要描述發生變化,您不介意重新編譯,那麼'DescriptionAttribute'應該足夠了(什麼代碼不適合您?)。但坦率地說,如果你使用了「字典」,除非你提到的整數具有相同的「永久」質量,例如一個GUID,枚舉沒有多大意義。 – Jon

+0

@弗拉德不是我所知道的。我忘了提及我認爲自己是C#的新手,所以我願意聽別人認爲我的工作,至少試一試。起初,我剛剛和Enum一起去了,因爲它看起來很有前途。 – VarnerBeast14

回答

7

我會建議有一個工具類有一些屬性;

public class Tool 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

然後在與這些交易的代碼,我會用一個Dictionary<int, Tool>。那麼如果說你想爲工具1001的描述,你會只是做:

Console.WriteLine(myTools[1001].Description); 

當然,你可以只使用一個Dictionary<int, string>,但你可能會發現以後,你要與工具相關的更多數據,以便創建一個班級更有意義。

+0

@jsmith也許我的代碼庫在所有屬性和下劃線上使用小寫字母來表示私有字段:P無論如何,我已經平息了你。 – evanmcdonnal

+0

這看起來不錯。當我完成時,我會嘗試着解決問題並回到這裏。它看起來很有希望,所以無論如何謝謝你的答案。 – VarnerBeast14

+0

我正在使用這種方法,但我在哪裏輸入工具名稱?在字典方法或類別中的類內? – VarnerBeast14

1

聽起來良好的情況下對一個Dictionary

實施例:

var tools = new Dictionary<int, string> 
{ 
    {1001, "Tool 1"}, 
    {1002, "Tool 2"}, 
    {1003, "Tool 3"}, 
}; 

string tool1Name = tools[1001]; 
//toolName == "Tool 1" 
0

枚舉是非常有用的。他們有時間和地點,在你的例子中,你真的不應該使用它們。它們以強類型表示恆值,如果標記爲flags,則可以使用它。

對於你的情況,一類是可行的。您可以使用List<T>Dictionary<TKey, TValue>等等,以便對它們進行引用並使用LINQ來處理這些集合。