Estoy escribiendo un método que determina el valor más alto en una enumeración .NET para que pueda crear un BitArray con un bit para cada valor de enumeración:Encontrar el valor más alto en una enumeración
pressedKeys = new BitArray(highestValueInEnum<Keys>());
necesito esto en dos enumeraciones diferentes, por lo que la convirtió en un método genérico:
/// <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;
}
Como se puede ver, estoy echando el valor de retorno de Enum.GetValues () a int [], no EnumType []. Esto se debe a que no puedo convertir EnumType (que es un parámetro de tipo genérico) en int más tarde.
El código funciona. Pero es válido? ¿Siempre puedo convertir el retorno de Enum.GetValues () a int []?
Posible duplicado de [Obteniendo el valor máximo de una enumeración] (https://stackoverflow.com/questions/203377/getting-the-max-value-of-an-enum) – palswim