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
}