Generic Type Parameters, Generic Enum Return Type
我有一个具有一般返回类型的函数。如果value参数是有效的枚举值,则该方法返回相关的枚举值。
如何返回相关的枚举值?编译器错误:无法转换类型"int"?"t"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public static T? GetEnumValue<T>(int? value) { if (value == null) { return null; } try { var enumValues = Enum.GetValues(typeof(T)); foreach (object enumValue in enumValues) { if (Convert.ToInt32(enumValue).Equals(value)) { // ERROR: Cannot convert type 'int?' to 'T' return (T)value; } } } catch (ArgumentNullException) { } catch (ArgumentException) { } catch { } return null; } |
谢谢,
三个变化使它对我有效。将返回类型更改为nullabel,并添加了where t:struct(从https://stackoverflow.com/a/209219/455904剪切),并将中间的返回更改为返回enumValue。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public static Nullable<T> GetEnumValue<T>(int? value) where T : struct { if (value == null) { return null; } try { var enumValues = Enum.GetValues(typeof(T)); foreach (object enumValue in enumValues) { if (Convert.ToInt32(enumValue).Equals(value)) { return (T)enumValue; } } } catch (ArgumentNullException) { } catch (ArgumentException) { } catch { } return null; } |
使用Enum.ToObject方法,而不是使用