如何将枚举转换为自己想要的字符串的字符串

时间:2015-05-28 04:51:21

标签: c# wpf enums

我使用以下代码进行枚举打印我想在消息框中获取星期日字符串而不更改枚举值。目前它提供OffDay

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            MessageBox.Show(Days.Sunday.ToString());
        }
    }

enum Days
{
    Sunday =0,
    OffDay = 0,
    Monday = 1,
    FirstWorkingDay = 1
}

3 个答案:

答案 0 :(得分:0)

您必须为您的枚举成员分配唯一号码才能识别它们,因为您0Sunday OffDay获得了最后一个即OffDay您可以将OffDay和FirstWorkingDay分别与星期日和星期一的Description属性联系起来。

enum Days
{
    [Description("OffDay")]
    Sunday =0,
    [Description("FirstWorkingDay")]
    Monday = 2,       
}

现在你将获得MessageBox.Show(Days.Sunday.ToString());

的星期日

要获取枚举成员的description属性,请按照此Getting attributes of Enum's value帖子

进行操作

答案 1 :(得分:0)

当两个枚举值具有相同的表示形式时,不能保证Enum.ToString使用哪个枚举值。您可以将测试缩短为Console.WriteLine(Language.Heb);.由于Heb和heb都是有效的输出,所以不能保证你获得哪一个。见Enum.ToString

上述链接指出:

如果多个枚举成员具有相同的基础值,并且您尝试根据其基础值检索枚举成员名称的字符串表示形式,则您的代码不应对该方法将返回的名称做出任何假设。例如,以下枚举定义了两个具有相同基础值的成员Shade.Gray和Shade.Grey。

string shadeName = ((Shade) 1).ToString("F");

以下方法调用尝试检索其基础值为1的Shade枚举成员的名称。该方法可以返回" Gray"或者" Gray",并且您的代码不应该对将返回哪个字符串做出任何假设。

String command="scp " + (ptimestamp ? "-p" :"") +" -t "+rfile;

答案 2 :(得分:-1)

你应该为每个元素使用唯一值,所以如果你想使用不同的文本你可以添加DescriptionAttribute 并显示该值:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        MessageBox.Show(Days.OffDay.GetDescription());
    }
}

}

使用like:

enum Days
{
   [Description("Sunday")]
   OffDay = 0,
   [Description("Monday")]
   FirstWorkingDay = 1
}

Enum应该是这样的:

class Obj {

    var isTrue: Bool

    init(isTrue: Bool)
    {
        self.isTrue = isTrue
    }

}