我写了这个 EnumHelper 方法
public static IEnumerable<T> AsEnumerable<TEnum, T>(Func<TEnum, T> projection = null) where TEnum : struct
{
if (!typeof(TEnum).IsEnum)
throw new InvalidOperationException("Type parameter TEnum must be an enum");
if (projection == null)
return Enum.GetValues(typeof (TEnum)).OfType<TEnum>();
return Enum.GetValues(typeof (TEnum)).OfType<TEnum>().Select(projection);
}
第一次返回时出现编译时错误。返回一个IEnumerable<TEnum>
错误 46 无法将类型隐式转换System.Collections.Generic.IEnumerable<TEnum>
为System.Collections.Generic.IEnumerable<T>
我对 没有任何限制T
,因此T
比TEnum
. inIEnumerable<out T>
T
是不变的,那么为什么我仍然会收到错误消息?