C# enums as function parameters?

47,286

Solution 1

This!

        public void Foo(Enum e)
        {
            var names = Enum.GetNames(e.GetType());

            foreach (var name in names)
            {
                // do something!
            }
        }   

EDIT: My bad, you did say iterate.

Note: I know I could just do the GetNames() call in my foreach statement, but I prefer to assign that type of thing to a method call first, as it's handy for debugging.

Solution 2

You mean something like Enum.GetNames?

Solution 3

Enum.GetValues Enum.GetNames

so something like...

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

Solution 4

You will have trouble if you try passing an enum directly to myFunc, as in the following example:

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

Solution 5

Use the Enum.GetNames( typeof(e) ) method, this will return an array of strings with the names.

You can also use Enum.GetValues to obtain the counterpart values.

Edit -Whoops - if you are passing the parameter as Enum, you will need to use e.GetType() instead of typeof() which you would use if you had passed the parameter in as the actual Enum type name.

Share:
47,286
TK.
Author by

TK.

--

Updated on July 09, 2022

Comments

  • TK.
    TK. almost 2 years

    Can you pass a standard c# enum as a parameter?

    For example:

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

    By doing this I hope to retrieve all the names within any given enum. What would the Iteration code look like?

  • tvanfosson
    tvanfosson over 15 years
    I'd probably assign the result to something. :-)
  • Daniel Schaffer
    Daniel Schaffer over 15 years
    yeah whups... sorry, I got excited :D
  • iMortalitySX
    iMortalitySX over 11 years
    That doesn't explain anything, in fact I have no issue passing an enum to a function in the way you describe...
  • Adam Parkin
    Adam Parkin over 9 years
    Error: 'e1' is a 'type' but is used like a 'variable'