2

我的问题是如何获取枚举变量的值?

在此处输入图像描述 请查看随附的屏幕截图...“hatas”是一个标志枚举。我想得到“HasError”-“NameOrDisplayNameTooShort”错误来显示它们。

using System;

namespace CampaignManager.Enums
{
    [Flags]
    public enum CampaignCreaterUpdaterErrorMessage
    {
        NoError = 0,
        HasError = 1,
        NameOrDisplaynameTooShort = 2,
        InvalidFirstName = 3,
    }
}

我简单地尝试过;

Messagebox.Show(hatas);  // it's showing InvalidFirstName somehow...

非常感谢您的帮助...

4

3 回答 3

2

第一件事:如果你想在你的枚举上使用FlagsAttribute,你需要像这样定义两个幂的值:

[Flags]
public enum CampaignCreaterUpdaterErrorMessage
{
    NoError = 0,
    HasError = 1,
    NameOrDisplaynameTooShort = 2,
    InvalidFirstName = 4,
}

要获取标记的枚举的一部分,请尝试以下操作:

    var hatas = CampaignCreaterUpdaterErrorMessage.HasError | CampaignCreaterUpdaterErrorMessage.NameOrDisplaynameTooShort;
    var x = (int)hatas;

    for (int i=0; i<Enum.GetNames(typeof(CampaignCreaterUpdaterErrorMessage)).Length; i++)
    {
        int z = 1 << i; // create bit mask

        if ((x & z) == z) // test mask against flags enum
        {
            Console.WriteLine(((CampaignCreaterUpdaterErrorMessage)z).ToString());
        }
    }

要获取基础值,请尝试强制转换:

Messagebox.Show(((int)hatas)ToString());

在您的示例中,默认情况下会针对 CampaignCreaterUpdaterErrorMessage 枚举调用 ToString,该枚举返回枚举的字符串表示形式。

通过转换为 int(枚举的底层默认类型),您可以在整数值上获得 ToString。

于 2012-05-23T13:14:57.053 回答
1

您需要将枚举转换/拆箱为 int,如下所示。

(int)CampaignCreaterUpdaterErrorMessage.NoError 
(int)CampaignCreaterUpdaterErrorMessage.HasError 
于 2012-05-23T13:17:47.803 回答
0

试试这个:

Messagebox.Show(CampaignCreaterUpdaterErrorMessage.NameOrDisplaynameTooShort);

于 2012-05-23T13:20:28.753 回答