我的问题是如何获取枚举变量的值?
请查看附带的截图...“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...
非常感谢您的帮助......
答案 0 :(得分: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。
答案 1 :(得分:1)
您需要将枚举转换/取消装入int,如下所示。
(int)CampaignCreaterUpdaterErrorMessage.NoError
(int)CampaignCreaterUpdaterErrorMessage.HasError
答案 2 :(得分:0)
试试这个:
Messagebox.Show(CampaignCreaterUpdaterErrorMessage.NameOrDisplaynameTooShort);