Enums הם סוג נתונים שימושי המאפשר לך להגדיר רשימה של אפשרויות בשם עבור משתנה. לדוגמה, אם אתה רוצה לאחסן כל יום בשבוע, אתה יכול להשתמש ב-enum כדי לייצג את הערכים החוקיים.
Enums מקלים על הקריאה והכתיבה של הקוד שלך על ידי עידוד שמות משמעותיים והגבלת הערכים שבהם אתה יכול להשתמש. לעתים קרובות נוח להשתמש בהצהרת switch כדי לטפל בערכים האפשריים של enum.
אתה יכול להצהיר ולהשתמש ב-enums בשפות תכנות רבות, כולל C#.
כיצד להכריז על Enum ב-C#
ב-C#, בדרך כלל תמחקו ספירות ברמת מרחב השמות. לדוגמה, ביישום מסוף C#, אתה יכול להכריז על ה-enums שלך כמאפייני מחלקה. אתה יכול לראות דוגמה בזה ריפו של GitHub.
מעמדתכנית
{
enum יום חול {
יוֹם שֵׁנִי,
יוֹם שְׁלִישִׁי,
יום רביעי,
יוֹם חֲמִישִׁי,
יוֹם שִׁישִׁי,
יום שבת,
יוֹם רִאשׁוֹן
}
סטָטִיבָּטֵלרָאשִׁי(חוּט[] טוען)
{
}
}
כאשר אתה מכריז על enum, כל אפשרות מקבלת ערך שלם המייצג את האינדקס שלה. כברירת מחדל, לערך הראשון ב-enum יש ערך אינדקס של 0. כדי לשנות זאת, אתה יכול לציין אינדקס משלך עבור האלמנט הראשון כאשר אתה מכריז על ה-enum:
enum יום חול {
יום שני = 1,
יוֹם שְׁלִישִׁי,
יום רביעי,
יוֹם חֲמִישִׁי,
יוֹם שִׁישִׁי,
יום שבת,
יוֹם רִאשׁוֹן
}
במקרה זה, האינדקס של האלמנט הראשון יוֹם שֵׁנִי מתחיל ב 1. האינדקס של האלמנט הבא יוֹם שְׁלִישִׁי יהיה 2, וכולי.
כיצד לגשת לערך Enum ב-C#
ישנן דרכים רבות ושונות שבהן תוכל לגשת לערכים המאוחסנים בתוך רשימות. הערך המוחזר עבור כל אפשרות ב-enum הוא המדד. עבור דוגמה זו, הערך של יוֹם חוֹל. יוֹם שִׁישִׁי הוא 5.
אחת הדרכים שבהן תוכל לאחזר את שם ה-enum היא באמצעות ה- תקצירים. GetName() פוּנקצִיָה. זה מקבל את שם האפשרות באינדקס 5:
חוּט יום שישי = Enum. GetName(סוג של(יום חול), יום חול. יוֹם שִׁישִׁי);
לְנַחֵם. WriteLine("תודה לאל שזה" + שישי + "!");
// פלט = תודה לאל שזה יום שישי!
אתה יכול גם לגשת לערך באמצעות האינדקס שלו. במקרה זה, הערך באינדקס 2 ב- Weekday enum (שהוא יום שלישי) יישמר במשתנה:
יום שלישי = (יום חול)2;
לְנַחֵם. WriteLine("היום זה " + יום שלישי);
// פלט = היום יום שלישי
כאשר אתה מעביר מנה כטיעון לתוך לְנַחֵם. WriteLine(), ה toString() שיטה עבור ה-enum פועלת באופן אוטומטי. זה אומר שבמקום להדפיס את הערך המספרי האמיתי של ה-enum, כלומר 5, זה ידפיס את ערך המחרוזת, יוֹם שִׁישִׁי.
לְנַחֵם. WriteLine (יום חול. יום חמישי + " החדש " + יום חול. יוֹם שִׁישִׁי);
// פלט = יום חמישי הוא יום שישי החדש
אתה יכול גם להמיר או לנתח את סוג הנתונים למספר שלם כדרך נוספת לאחסן אינדקס של אופציה:
int MondayIndex = (int)יוֹם חוֹל. יוֹם שֵׁנִי;
לְנַחֵם. WriteLine (mondayIndex);
// פלט = 1
כיצד להשוות ערכים ב-C#
ב-C#, אתה יכול להשוות enums באמצעות אופרטורי ההשוואה (==, !=, , <=, >=). זה ישווה את הערך המספרי של האפשרויות.
יום חול יום1 = יום חול. יוֹם שֵׁנִי;
יום חול יום2 = יום חול. יוֹם שְׁלִישִׁי;
אם (יום 1 == יום 2)
{
לְנַחֵם. WriteLine("הימים אותו דבר".);
}
אַחֵר
{
לְנַחֵם. WriteLine("הימים שונים".);
}
בדוגמה זו, הערך של Weekday. יום שני הוא 1, והערך של יום השבוע. יום שלישי זה 2, אז ה 1 == 2 ההשוואה תיכשל.
דרך נוספת להשוות בין רשימות היא שווים() שיטה:
אם (יום 1. שווה (יום 2))
{
לְנַחֵם. WriteLine("הימים אותו דבר".);
}
אַחֵר
{
לְנַחֵם. WriteLine("הימים שונים".);
}
אתה יכול גם השתמש במשפט מתג C# כדי להשוות ערך מול כל אפשרות ברשימה. בדוגמה זו, הקוד ייכנס למקרה של יום רביעי:
יום השבוע valueToCompare = יום חול. יום רביעי;
החלף (valueToCompare)
{
מקרה יוֹם חוֹל. יוֹם שֵׁנִי:
לְנַחֵם. WriteLine("אני צריך קפה.");
לשבור;
מקרה יוֹם חוֹל. יוֹם שְׁלִישִׁי:
לְנַחֵם. WriteLine("אני צריך קפה.");
לשבור;
מקרה יוֹם חוֹל. יום רביעי:
לְנַחֵם. WriteLine("אני צריך קפה.");
לשבור;
מקרה יוֹם חוֹל. יוֹם חֲמִישִׁי:
לְנַחֵם. WriteLine("יום חמישי זה יום שישי החדש!");
לשבור;
מקרה יוֹם חוֹל. יוֹם שִׁישִׁי:
לְנַחֵם. WriteLine("תודה לאל זה יום שישי!");
לשבור;
מקרה יוֹם חוֹל. יום שבת:
לְנַחֵם. WriteLine("היום האהוב עליי!");
לשבור;
מקרה יוֹם חוֹל. יוֹם רִאשׁוֹן:
לְנַחֵם. WriteLine("היום האהוב השני עליי!");
לשבור;
בְּרִירַת מֶחדָל:
לְנַחֵם. WriteLine("יום לא חוקי בשבוע.");
לשבור;
}
כיצד לבצע איטרציה על Enums ב-C#
אתה יכול לחזור על ה-enums ב-C# באמצעות ה- Enum. GetValues() שיטה, המחזירה מערך של כל הערכים ב-enum. קטע קוד זה מודפס בכל יום בשבוע, כולל שני, שלישי וכן הלאה:
לכל אחד (יום חול ב Enum. GetValues(סוג של(יוֹם חוֹל)))
{
לְנַחֵם. WriteLine((int)יְוֹם); // להדפסת האינדקס
לְנַחֵם. WriteLine (יום); // כדי להדפיס את ערך הטקסט
}
אתה יכול גם לחזור על ערכי ה-enum באמצעות ה- Enum. GetNames() שיטה. זה מחזיר רשימה של ערכי מחרוזת כדי לייצג את השמות עבור אפשרויות ה-enum:
לכל אחד (חוּט שֵׁם ב Enum. GetNames(סוג של(יוֹם חוֹל)))
{
int אינדקס = (int)(יום חול) Enum. לְנַתֵחַ(סוג של(יום חול), שם);
לְנַחֵם. WriteLine (אינדקס); // להדפסת האינדקס
לְנַחֵם. WriteLine (שם); // כדי להדפיס את ערך הטקסט
}
שימוש ב-Enums ב-C#
אתה יכול להשתמש ב-enums בקוד שלך כדי להפוך אותו לקריאה יותר ופחות נוטה לבאגים. Enums יכולים להיות מאוד שימושיים גם כאשר הם מתאימים למבנים אחרים, כגון מילונים.