valores valor tipo reciben que por paso pasar pasaje parametros parametro objetos funciones example ejemplos como clase c# enums loops function-parameter

valor - C#enumera como parámetros de función?



pasar objetos como parametros en c# (7)

¿Se puede pasar un enum de c # estándar como parámetro?

Por ejemplo:

enum e1 { //... } enum e2 { //... } public void test() { myFunc( e1 ); myFunc( e2 ); } public void myFunc( Enum e ) { // Iterate through all the values in e }

Al hacer esto, espero recuperar todos los nombres dentro de cualquier enumeración dada. ¿Cómo se vería el código de iteración?


¡Esta!

public void Foo(Enum e) { var names = Enum.GetNames(e.GetType()); foreach (var name in names) { // do something! } }

EDITAR: Mi mal, dijiste iterar .

Nota: Sé que podría hacer la llamada GetNames () en mi declaración de foreach, pero prefiero asignar ese tipo de cosas a una llamada de método primero, ya que es útil para la depuración.


¿Te refieres a algo así como Enum.GetNames?


Enum.GetValues ​​Enum.GetNames

algo así como ...

foreach(e1 value in Enum.GetValues(typeof(e1)))


Me gusta esto:

public void myFunc(Enum e) { foreach (var name in Enum.GetNames(typeof(e))) { Console.WriteLine(name); } }


Utilice el método Enum.GetNames (typeof (e)), esto devolverá una matriz de cadenas con los nombres.

También puede usar Enum.GetValues ​​para obtener los valores de contraparte.

Edit -Whoops - si está pasando el parámetro como Enum, necesitará usar e.GetType () en lugar de typeof () que usaría si hubiera pasado el parámetro como el nombre de tipo de Enum real.


correcto es:

public void myFunc(Enum e) { foreach (var name in Enum.GetNames(e.GetTye())) { Console.WriteLine(name); } }


Tendrá problemas si intenta pasar una enum directamente a myFunc , como en el siguiente ejemplo:

enum e1 {something, other}; myFunc(e1); // Syntax error: "e1 is a type, but is being used like a variable"