2014-01-30 59 views

回答

3

您不能在標識符名稱中使用.

C# Specification on Identifiers

你能做的最好的會是這樣的:

enum value 
{ 
    V1dot0, 
    V2dot0, 
    V3dot0 
} 

enum value 
{ 
    V10, 
    V20, 
    V30 
} 

enum value 
{ 
    V1_0, 
    V2_0, 
    V3_0 
} 

或使用Description像Koen建議的屬性。

+2

或下劃線; D – JonE

+2

+1下劃線在C#中是邪惡的,個人偏好! –

5

一個可能的解決辦法是使用DescriptionAttribute的:

enum value 
{ 
    [Description("V1.0")] 
    V1_0, 

    [Description("V2.0")] 
    V2_0, 

    [Description("V3.0")] 
    V3_0 
} 
2

你必須聲明你的枚舉沒有點例如

public enum value { 
    V1, 
    V2, 
    V3 
    } 

,但你可以實現擴展方法表示枚舉值:

public static class valueExtensions { 
    public static String ToReport(this value item) { 
    switch (item) { 
     case value.V1: 
     return "V1.0"; 
     case value.V2: 
     return "V2.0"; 
     case value.V3: 
     return "V3.0"; 
     default: 
     return "?"; 
    } 
    } 
} 

... 
value data = value.V1; 
String result = data.ToReport(); // <- "V1.0" 
0

我知道要做到這一點,唯一的解決方法是通過描述,如描述here

0

寫一個靜態方法來顯示它,或者將它封裝到類中並覆蓋ToString方法。

ToString(enumValue eValue){ 
switch (eValue) { 
    case V10: 
     return "V1.0"; 
     break; 
    case V20: 
     return "V2.0"; 
     break; 
} 

}

1

你也可以使用readonly陣列:

public readonly string[] value={"V1.0","V2.0","V3.0"}; 
+1

readonly數組不是不可變的,就像枚舉一樣,readonly只會阻止您重新分配字段值,但仍可以更改數組的內容。此外,你真的不應該公開 - 這是屬性的用途。 – Jay

+0

可能是字典,而不是數組,更好的解決方案在這裏:{{「V1.0」,1},{「V2.0」,2},{「V3.0」,3}} –

0

您不能分配字符串值,以枚舉但是你可以使用分配屬性。你得數值與描述

using System.ComponentModel; 

namespace myCompany.MyProject.BO { 

    public enum SampleTypes 
    { 
     // Default   
     [Description("- None -")] 
     None=0, 

     [Description("My type 1")] 
     V1=1, 

     [Description("My type 2")] 
     V2=2, 

     [Description("My type 3")] 
     V3=3 
    } } 

然後你就可以定義輔助方法來獲得任何說明或鍵,值對綁定到一個下拉列表

public static string GetDescription(System.Enum value) 
    { 
     FieldInfo FieldInfo = value.GetType().GetField(value.ToString()); 
     DescriptionAttribute[] attributes = (DescriptionAttribute[])FieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); 
    if ((attributes.Length > 0)) 
      return attributes[0].Description; 
     else 
      return value.ToString(); 
    } 

    public static List<KeyValuePair<string, string>> GetValuesAndDescription(System.Type enumType) 
    { 
     List<KeyValuePair<string, string>> kvPairList = new List<KeyValuePair<string, string>>(); 
     foreach (System.Enum enumValue in System.Enum.GetValues(enumType)) 
     { 
      kvPairList.Add(new KeyValuePair<string, string>(enumValue.ToString(), GetDescription(enumValue))); 
     } 
     return kvPairList; 
    } 

可以綁定關聯您dropdownlists這樣

Helpers.GetValuesAndDescription(typeof(YourEnumName)); 
     YourDropDown.DataValueField = "Key"; 
     YourDropDown.DataTextField = "Value"; 
     YourDropDown.DataBind();` 

More on this link