איך לבדוק אם מחרוזת קיימת ב- Enum ולבצע המרה

כאשר עובדים עם Enum לפעמים יש מקרים שבהם רוצים לקבל את הערך ממחרוזת (string) קיימת, למשל, כאשר מקבלים את הערך מה query string. 

על מנת לעשות את זה קיימות פונקציות עזר ב C# אשר עוזרות לנו להמיר טקסט לערך ב-Enum קיים.

 

נניח שיש לנו את ה-Enum הבא:

 public enum Animal
{
    Dog,
    Cat,
    Mouse,
    Horse,
    Fish
}

 

לצורך הדוגמא נגדיר את הערך שנרצה לבדוק ידנית ולא נקבל אותו ממקום כלשהוא. נקרא למשתנה animalString ונשים בו את הערך "Cat" (שימו לב שההשוואה היא Case sensitive, ז"א שהערך "cat", למשל, לא ימצא ב-Enum).

string animalString = "Cat";

במידה ואתם עובדים עם .NET Framework 4 ומעלה ניתן לעשות זאת בעזרת הפונקציה Enum.TryParse.

 

Animal parsedAnimal;
Enum.TryParse(animalString, out parsedAnimal);

 

 

במידה ואתם עובדים עם .NET Framework נמוך יותר, לא להתייאש, זה עדיין אפשרי אך ידרוש שנבצע את זה ב-2 שלבים. השלב הראשון יהיה בדיקה אם ה-Enum מכיל את הערך והשלב השני יהיה ההמרה עצמה.

 

לאחר מכן נבצע בדיקה אם מחרוזת קיימת ב- Enum:

Animal parsedAnimal = (Animal)Enum.Parse(typeof(Animal), animalString);

 הפונקציה Parse מקבלת 2 פרמטרים: הפרמטר הראשון הוא סוג ה-Enum, שבמקרה שלנו זה Animal ונעטוף אותו ב-typeof על מנת לקבל את ה- type שלו, והפרמטר השני הוא המחרוזת שאנחנו רוצים להשוואת ל-Enum.

 

ובשורה הבאה נבצע את ההמרה למשתנה של ה- Enum מסוג Animal 

Animal parsedAnimal = (Animal)Enum.Parse(typeof(Animal), animalString);

 

 

תגיות:

תגובות נעולות