Я пишу метод, который определяет самое высокое значение в перечислении .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 []?