21. Enum.ToString(format)

בהמשך לטיפ היומי הקודם, נניח שיש לנו enum:

1
2
3
4
5
6
7
8
9
10
public enum Days
{
Sunday = 1,
Monday = 2,
Tuesday = 3,
Wednesday = 4,
Thursday = 5,
Friday = 6,
Saturday = 7
}

ואנחנו רוצים להדפיס את הערך של איבר בenum.

ראינו פעם שעברה שToString מחזיר את השם של האיבר ולא את הערך שלו.

נשאלת השאלה כיצד ניתן להדפיס את הערך של האיבר.

פתרון אחד הוא לעשות משהו כזה:

1
2
string dayValue =
Convert.ToInt32(Days.Sunday).ToString();

אלא שלא תמיד מאחורי enum מסתתר int.

אפשרות שנייה היא לעשות משהו כזה:

1
2
3
string dayValue =
Convert.ChangeType(Days.Sunday,
Enum.GetUnderlyingType(typeof (Days))).ToString();

אפשרות שלישית היא להשתמש בToString

אבל רגע! אמרנו שToString מחזיר את השם של האיבר בenum. אבל יש overload שמקבל format!

1
2
3
4
5
string dayValue = Days.Sunday.ToString("D");
string dayHexValue = Days.Sunday.ToString("X");
Console.WriteLine(dayValue); // prints 1
Console.WriteLine(dayHexValue); // prints 00000001

הראשון מדפיס את ערך הenum והשני את ערך הenum בhex.

שבוע טוב

שתף