Étant donné une énumération arbitraire en C #, comment sélectionner une valeur aléatoire?
(Je n'ai pas trouvé cette question très basique sur SO. Je publierai ma réponse dans une minute comme référence pour tout le monde, mais n'hésitez pas à poster votre propre réponse.)
random
en boucle, sinon vous continuerez à obtenir la même valeur.Utilisez Enum.GetValues pour récupérer un tableau de toutes les valeurs. Sélectionnez ensuite un élément de tableau aléatoire.
Tester:
->
la source
Vous pouvez simplement faire ceci:
Pas besoin de stocker des tableaux
la source
GetNames
renvoie un tableau.Voici une version alternative comme
Extension Method
utilisationLINQ
.la source
Appel
Enum.GetValues
; cela renvoie un tableau qui représente toutes les valeurs possibles pour votre énumération. Choisissez un élément au hasard dans ce tableau. Cast cet élément vers le type d'énumération d'origine.la source
Voici une fonction générique pour cela. Gardez la création RNG en dehors du code haute fréquence.
Exemple d'utilisation:
la source
Personnellement, je suis un fan des méthodes d'extension, donc j'utiliserais quelque chose comme ça (bien que ce ne soit pas vraiment une extension, cela a l'air similaire):
la source
public static T Of<T>() where T : Enum
docs.microsoft.com/en-us/visualstudio/releasenotes/…Adapté comme une extension de classe aléatoire:
Exemple d'utilisation:
la source
Vous pouvez également lancer une valeur aléatoire:
Mais vous devriez utiliser un meilleur randomiseur comme celui de cette bibliothèque .
la source