Ich habe eine Aufzählung wie diese:
public enum PromotionTypes
{
Unspecified = 0,
InternalEvent = 1,
ExternalEvent = 2,
GeneralMailing = 3,
VisitBased = 4,
PlayerIntroduction = 5,
Hospitality = 6
}
I want to check if this Enum contain a number I give. For example: When I give 4, Enum contain that, So I want to return True, If I give 7, There isn't 7 in this Enum, So it returns False. I tried Enum.IsDefine but it only check the String value. How can I do that?
Antworten:
The
IsDefined
method requires two parameters. The first parameter is the type of the enumeration to be checked. This type is usually obtained using a typeof expression. The second parameter is defined as a basic object. It is used to specify either the integer value or a string containing the name of the constant to find. The return value is a Boolean that is true if the value exists and false if it does not.enum Status { OK = 0, Warning = 64, Error = 256 } static void Main(string[] args) { bool exists; // Testing for Integer Values exists = Enum.IsDefined(typeof(Status), 0); // exists = true exists = Enum.IsDefined(typeof(Status), 1); // exists = false // Testing for Constant Names exists = Enum.IsDefined(typeof(Status), "OK"); // exists = true exists = Enum.IsDefined(typeof(Status), "NotOK"); // exists = false }
SOURCE
quelle
Try this:
IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes)) .OfType<PromotionTypes>() .Select(s => (int)s); if(values.Contains(yournumber)) { //... }
quelle
You should use
Enum.IsDefined
.I'm 100% sure it will check both string value and int(the underlying) value, at least on my machine.
quelle
Maybe you want to check and use the enum of the string value:
string strType; if(Enum.TryParse(strType, out MyEnum myEnum)) { // use myEnum }
quelle