1方法原型为:- [ComVisibleAttribute(true)]
- public static Object Parse(
- Type enumType,
- string value
- )
复制代码 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
2参数说明:enumType 类型:System.Type 枚举类型。value 类型:System.String 包含要转换的值或名称的字符串。
3参数value:如果 value 是一个不与 enumType 的命名常数对应的名称,则此方法将引发 ArgumentException。 如果 value 是一个不表示 enumType 枚举基础值的整数的字符串表示形式,则此方法将返回基础值是已转换为整型的 value 的枚举成员。
这就解释楼主输入5也可以啊,使用方法的时候可以查查msdn,上面解释很详细。解决输入超出定义的枚举值对应数值返回的方法:可以调用Enum的 IsDefined 方法。
代码如:- using System;
- [Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };
- public class Example
- {
- public static void Main()
- {
- string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
- foreach (string colorString in colorStrings)
- {
- try {
- Colors colorValue = (Colors) Enum.Parse(typeof(Colors), colorString);
- if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
- Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
- else
- Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
- }
- catch (ArgumentException) {
- Console.WriteLine("'{0}' is not a member of the Colors enumeration.", colorString);
- }
- }
- }
- }
- // The example displays the following output:
- // Converted '0' to None.
- // Converted '2' to Green.
- // 8 is not an underlying value of the Colors enumeration.
- // 'blue' is not a member of the Colors enumeration.
- // Converted 'Blue' to Blue.
- // 'Yellow' is not a member of the Colors enumeration.
- // Converted 'Red, Green' to Red, Green.
复制代码 |