recorrer net manejo enumerado enum c# syntax enums

c# - net - Iterar sobre enumeración?



recorrer enumerado c# (2)

Bueno, puedes usar Enum.GetValues :

foreach (GameObjectType type in Enum.GetValues(typeof(GameObjectType)) { ... }

Sin embargo, no está fuertemente tipado, y el IIRC es bastante lento. Una alternativa es usar mi proyecto UnconstrainedMelody :

// Note that type will be inferred as GameObjectType :) foreach (var type in Enums.GetValues<GameObjectType>()) { ... }

UnconstrainedMelody es agradable si está haciendo mucho trabajo con enumeraciones, pero puede ser una exageración para un solo uso ...

Estoy tratando de iterar sobre una enumeración, y llamar a un método usando cada uno de sus valores como parámetro. Tiene que haber una mejor manera de hacerlo que la que tengo ahora:

foreach (string gameObjectType in Enum.GetNames(typeof(GameObjectType))) { GameObjectType kind = (GameObjectType) Enum.Parse(typeof (GameObjectType), gameObjectType); IDictionary<string, string> gameObjectData = PersistentUtils.LoadGameObject(kind, persistentState); } //... public static IDictionary<string, string> LoadGameObject(GameObjectType gameObjectType, IPersistentState persistentState) { /* ... */ }

Obtener los nombres de enumeración como cadenas, luego analizarlos de nuevo a enums, se siente horrible.


En caso de que alguien más esté lo suficientemente loco como para querer hacerlo, quiere hacer esto en C ++ / CLI, aquí hay un puerto que funciona:

using namespace System; enum class GameObjectType { num1 = 1, num2 = 2, }; Array^ objectTypes = Enum::GetValues(GameObjectType::typeid); for each( GameObjectType^ objectType in objectTypes) { // Do something }