Difference between Enum.GetValues and Enum.GetNames
Enums are actually numeric. GetNames
returns the field names. GetValues
returns the numeric values.
MSDN has a great sample on GetValues
.
Think of enumerations as Name/Value pairs.
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
In the example above, GetNames()
will return a string
array containing the items "Negative", "Zero", and "Positive." GetValues()
will return an array of SignMagnitude
containing SignMagnitude.Negative
, SignMagnitude.Zero
and SignMagnitude.One
.
There is an example of binding Enum names to a dropdown in a DataGridView here: Create drop down list options from enum in a DataGridView
GetValues will return an Array of the underlying integer values for each item in the Enum.
GetNames will return a string array of the Names for the items in the enum.
The Array returned by GetValues implements IList while the string[] returned by GetNames does not, which explains the binding differences.