【发布时间】:2010-12-17 08:39:49
【问题描述】:
我正在编写一种方法来确定 .NET 枚举中的最大值,因此我可以为每个枚举值创建一个 BitArray:
pressedKeys = new BitArray(highestValueInEnum<Keys>());
我在两个不同的枚举上都需要这个,所以我把它变成了一个泛型方法:
/// <summary>Returns the highest value encountered in an enumeration</summary>
/// <typeparam name="EnumType">
/// Enumeration of which the highest value will be returned
/// </typeparam>
/// <returns>The highest value in the enumeration</returns>
private static int highestValueInEnum<EnumType>() {
int[] values = (int[])Enum.GetValues(typeof(EnumType));
int highestValue = values[0];
for(int index = 0; index < values.Length; ++index) {
if(values[index] > highestValue) {
highestValue = values[index];
}
}
return highestValue;
}
如您所见,我将 Enum.GetValues() 的返回值转换为 int[],而不是 EnumType[]。这是因为我不能稍后将 EnumType(这是一个泛型类型参数)转换为 int。
代码有效。但它有效吗? 我总是可以将 Enum.GetValues() 的返回值转换为 int[] 吗?
【问题讨论】: