C# Check是枚举中的输入
我不知道为什么这么难不 我必须检查Enum中的用户输入 现在我有两个不同的方法,它们告诉(False或True)是在枚举中输入的。我不想向用户展示这些东西,我只想让程序像这样打印: 在名为“奥迪”的汽车制造商列表中找到您的输入“此处的用户输入”C# Check是枚举中的输入,c#,enums,C#,Enums,我不知道为什么这么难不 我必须检查Enum中的用户输入 现在我有两个不同的方法,它们告诉(False或True)是在枚举中输入的。我不想向用户展示这些东西,我只想让程序像这样打印: 在名为“奥迪”的汽车制造商列表中找到您的输入“此处的用户输入” 您可以使用Enum.GetNames函数,然后解析名称以获取int值 foreach (var merkkiluettelo in Enum.GetNames(typeof(Automerkit))) { Enum.TryParse(merkki
您可以使用
Enum.GetNames
函数,然后解析名称以获取int
值
foreach (var merkkiluettelo in Enum.GetNames(typeof(Automerkit)))
{
Enum.TryParse(merkkiluettelo, out Automerkit a);
Console.WriteLine($"{(int)a} = {merkkiluettelo}");
}
您可以使用该方法获取与其基础值关联的枚举值的名称(还有其他方法,请参阅)。您只需要一个foreach
循环,并且可以使用字符串插值以value=name
格式打印:
foreach (int rawValue in Enum.GetValues(typeof(Automerkit))) {
WriteLine($"{rawValue} = {Enum.GetName(typeof(Automerkit), rawValue)}");
}
当转换为字符串时,枚举值会自动转换为枚举名称。因此,您可以编写
foreach (Automerkit enumValue in Enum.GetValues(typeof(Automerkit))) {
WriteLine($"{(int)enumValue} = {enumValue}");
}
注意,foreach语句自动将元素类型(GetValues
返回的object
转换为迭代变量的类型(Automerkit
)
有关详细信息,请参阅的部分。
WriteLine的参数使用(Microsoft文档)。您可以使用Enum.GetName(typeof(Automerkit),luku)
获取枚举值的名称。GetValues
返回传入而不是对象的类型的System.Array
,因此不会转换。@snr,否。尝试使用foreach(enum.GetValues中的var enumValue(typeof(Automerkit))){…
使用var
时,您将看到enumValue
将被推断为object
(请注意,代码仍然使用var
,因此不需要将对象转换为enum类型,而是更好地反映了程序员的意图)。注意,即使数组是Automerkit[]
,它返回为System.Array
。因此,如果要将对象显式键入为Automerkit
,则必须强制转换整个数组或其元素。先生,首先,感谢您的努力和良好的解释,但是Enum.GetValues(typeof(Automerkit))
返回类型Automerkit[]
enumValue
的类型为object
。您的意思是该类型被隐式转换为Automerkit
类型吗?(object->Automerkit)。您介意看一下吗?请参阅的定义。它返回一个。索引器返回一个对象
。项的运行时类型是Automerkit
,但编译时的静态类型是对象
。要查看真实对象,必须强制转换它。
foreach (Automerkit enumValue in Enum.GetValues(typeof(Automerkit))) {
WriteLine($"{(int)enumValue} = {enumValue}");
}