Say you have the following ShipmentOption enumeration:
public enum ShipmentOption
{
Land,
Sea,
Air
}
By default each enumeration value will have an integer representation starting with 0. So 0 corresponds to Land, 1 to Sea and 2 to Air. Imagine that a method accepts the numeric value like this:
public void SendShipment(int numericShipmentType)
Then the incoming numeric parameter could be anything. How can we check whether an integer has a corresponding enumeration value?
The following code will do just that:
public void SendShipment(int numericShipmentType)
{
if (Enum.IsDefined(typeof(ShipmentOption), numericShipmentType))
{
Console.WriteLine("This type is defined: {0}", (ShipmentOption)numericShipmentType);
}
else
{
throw new InvalidEnumArgumentException("ShipmentOption", numericShipmentType, typeof(ShipmentOption));
}
}
The InvalidEnumArgumentException class is defined in the System.ComponentModel namespace.
Passing in 2 will result in the following output:
This type is defined: Air
An invalid integer argument will throw an exception:
The value of argument ‘ShipmentOption’ (5) is invalid for Enum type ‘ShipmentOption’.
View all various C# language feature related posts here.
Like this:
Like Loading...