我想在C#中创建字符串ENUM
。
基本上,我想在Enum
中设置窗体名称。当我在主页打开表单时,我想要为表单名称切换案例并打开特定的表单。
我知道ENUM
仅允许整数,但我想将其设置为string
。
有什么想法吗?
我想在C#中创建字符串ENUM
。
基本上,我想在Enum
中设置窗体名称。当我在主页打开表单时,我想要为表单名称切换案例并打开特定的表单。
我知道ENUM
仅允许整数,但我想将其设置为string
。
有什么想法吗?
枚举类型不能是字符串,但您可以附加属性,然后可以按如下方式读取枚举值....................
public enum States
{
[Description("New Mexico")]
NewMexico,
[Description("New York")]
NewYork,
[Description("South Carolina")]
SouthCarolina
}
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null &&
attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
如果你想详细了解,这里有一篇不错的文章:在C#中将字符串与枚举关联
正如大家所说,C#中的枚举不能是字符串(或除整数以外的任何类型)。我猜你来自Java?如果.NET有这个功能就好了,可以让枚举成为任何类型。
我通常绕过这个问题的方法是使用静态类:
public static class MyValues
{
public static string ValueA { get { return "A"; } }
public static string ValueB { get { return "B"; } }
}
使用这种技术,您也可以使用任何类型。您可以像使用枚举一样调用它:
if (value == MyValues.ValueA)
{
// do something
}
bool b = MyValues.ValueA == "someString"
。 - nawfalstring a = MyValues.ValueA;
然后,a = "haha";
基本上破坏了枚举的概念.. 我同意没有简单的解决方法。属性仍然是最好的选择.. - nawfal请执行以下操作:
private IddFilterCompareToCurrent myEnum =
(IddFilterCompareToCurrent )Enum.Parse(typeof(IddFilterCompareToCurrent[1]),domainUpDown1.SelectedItem.ToString());
我不确定我是否正确理解了你的意思,但我认为你正在寻找这个?
public enum State { State1, State2, State3 };
public static State CurrentState = State.State1;
if(CurrentState == State.State1)
{
//do something
}
我认为枚举并不是你问题的最佳解决方案。正如其他人已经提到的,枚举的值只能是整数值。
你可以简单地使用一个字典
来存储表格及其名称,例如:
Dictionary<string, Form> formDict = new Dictionary<string, Form>();
private void addFormToDict(Form form) {
formDict[form.Name] = form;
}
// ...
addFormToDict(new MyFirstForm());
addFormToDict(new MySecondForm());
// ... add all forms you want to display to the dictionary
if (formDict.ContainsKey(formName))
formDict[formName].Show();
else
MessageBox.Show(String.Format("Couldn't find form '{0}'", formName));
Enum
成员的名称命名为所需并使用.ToString()
,要么编写以下类似函数...string MyEnumString(MyEnum value)
{
const string MyEnumValue1String = "any string I like 1";
const string MyEnumValue2String = "any string I like 2";
...
switch (value)
{
case MyEnum.Value1:
return MyEnumValue1String;
case MyEnum.Value2:
return MyEnumValue2String;
...
}
}