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.

Tags:

C#

.Net