Wie wähle ich bei einer beliebigen Aufzählung in C # einen zufälligen Wert aus?
(Ich habe diese sehr grundlegende Frage auf SO nicht gefunden. Ich werde meine Antwort in einer Minute als Referenz für jeden veröffentlichen, aber Sie können gerne Ihre eigene Antwort veröffentlichen.)
random
in einer engen Schleife neu erstellen - andernfalls erhalten Sie immer den gleichen Wert.Verwenden Sie Enum.GetValues, um ein Array aller Werte abzurufen. Wählen Sie dann ein zufälliges Array-Element aus.
Prüfung:
->
quelle
Sie könnten dies einfach tun:
Arrays müssen nicht gespeichert werden
quelle
GetNames
gibt ein Array zurück.Hier ist eine alternative Version als
Extension Method
VerwendungLINQ
.quelle
Rufen Sie an
Enum.GetValues
; Dies gibt ein Array zurück, das alle möglichen Werte für Ihre Aufzählung darstellt. Wählen Sie ein zufälliges Element aus diesem Array. Wirf diesen Gegenstand auf den ursprünglichen Aufzählungstyp zurück.quelle
Hier ist eine generische Funktion dafür. Halten Sie die RNG-Erstellung außerhalb des Hochfrequenzcodes.
Anwendungsbeispiel:
quelle
Persönlich bin ich ein Fan von Erweiterungsmethoden, daher würde ich so etwas verwenden (obwohl es nicht wirklich eine Erweiterung ist, sieht es ähnlich aus):
quelle
public static T Of<T>() where T : Enum
docs.microsoft.com/en-us/visualstudio/releasenotes/…Angepasst als zufällige Klassenerweiterung:
Anwendungsbeispiel:
quelle
Sie können auch einen zufälligen Wert umwandeln:
Aber Sie sollten einen besseren Randomizer wie den in meiner Bibliothek verwenden .
quelle