我寫這決定在.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 []?
可能的重複[獲取枚舉的最大值](https://stackoverflow.com/questions/203377/getting-the-max-value-of-an-enum) – palswim 2017-07-20 21:06:38