J'écris une méthode qui détermine la valeur la plus élevée dans une énumération .NET je peux créer un BitArray avec un bit pour chaque valeur ENUM:Trouver la valeur la plus élevée dans un Enumeration
pressedKeys = new BitArray(highestValueInEnum<Keys>());
Je en ai besoin sur deux énumérations différentes, alors je l'ai transformé en une méthode générique:
/// <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;
}
Comme vous pouvez le voir, je couler la valeur de retour de Enum.GetValues () pour int [], pas EnumType []. C'est parce que je ne peux pas convertir EnumType (qui est un paramètre de type générique) en int plus tard.
Le code fonctionne. Mais est-ce valable? Puis-je toujours convertir le retour de Enum.GetValues () en int []?
Possible copie de [Obtenir la valeur maximale d'une énumération] (https://stackoverflow.com/questions/203377/getting-the-max-value-of-an-enum) – palswim