2016-11-17 81 views
-1

我有一個大型的數據集合,我需要在字符串數組中存儲相同的數據。使用整數枚舉作爲C#中的數組的索引而不轉換?

然後,此數組作爲回調事件傳遞到另一個類中。

所以我需要使用索引作爲枚舉值,以便外部人員可以輕鬆地讀取字符串值。

爲了這個,我想這一點,

public enum PublicData : int 
{ 
    CardNo = 0, 
    CardName = 1, 
    Address = 2, 
    //etc.... 
} 

的話,我已經通過這個訪問,

string[] Publicdata = new string[iLength]; 
Publicdata[PublicData.CardNo] = cardNovalue; 

但在這裏我得到 「無效類型的指數 - 錯誤」

如何解決同樣的問題。

+1

有一個關於這個討論在這裏:http://stackoverflow.com/questions/443935/indexing-arrays-with-enums-in-c-sharp –

+0

聽起來像那些不應該是枚舉成員,而是數據類的屬性。 – SimpleVar

回答

0

或者你可以用擴展方法去:

public static class MyEnumExtensions 
{ 
    public static int Val(this PublicData en) 
    { 
     return (int)en;    
    } 
} 

用法:

Publicdata[PublicData.Address.Val()]; 
+0

@ bati,親愛的,我知道這一點,但正如我在我的問題標題中提到的,我需要答案而不轉換爲int。 –

+0

爲什麼不只是** return(int)en; ** – Innat3

3

創建自定義集合類,並與PublicData枚舉爲索引添加索引屬性。

public enum PublicData : int 
{ 
    CardNo = 0, 
    CardName = 1, 
    Address = 2, 
} 

public class PublicdataCollection 
{ 
    private readonly string[] _inner; 

    public string this[PublicData index] 
    { 
     get { return _inner[(int)index]; } 
     set { _inner[(int) index] = value; } 
    } 

    public PublicdataCollection(int count) 
    { 
     _inner = new string[count]; 
    } 
} 
+0

尋找一個簡單的或內置的C#答案。但是這似乎在類內部轉換爲int,並且我不知道如果我在線程例程中調用它的性能。最後只是轉換爲int比這更好,因爲我需要代碼的性能。感謝ping。 –

0

就投你的枚舉值

Publicdata[(int)PublicData.CardNo] = cardNovalue;