
row יוצרת ערך שגוי, והקוד לא יזהה אותה.enum, שם לרשימה, ואת הקבועים בתוך סוגריים מסולסלים, למשל display עם row ו-column.display.row או display.column, וכך מי שקורא את הקוד מבין מיד מה הכוונה. אחרי הנקודה Visual Studio מציעה את כל הערכים האפשריים.Enum.Parse מקבלת את הסוג, את המחרוזת ואפשרות להתעלם מאותיות גדולות וקטנות, ומחזירה ערך מסוג ה-enum.ConsoleColor: רשימת הצבעים שהקונסול יכול להציג.DayOfWeek: ימי השבוע. אפשר לבדוק כל יום בעזרת switch.Enum.GetValues ו-Enum.GetNames: מחזירים את כל הערכים או את השמות שלהם, כדי לעבור עליהם בלולאה.[Flags] מעל ה-enum, ומשלבים ערכים בעזרת התו |.הטקסט המלא של הדקות הראשונות בהרצאה «enum» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו עוברים לנושא שנקרא enum המילה enum זה קיצור של enumeration שזה בעצם רשימה ואנחנו מתייחסים כאן ב-enum לרשימה של קבועים מה הכוונה ולמה בדיוק צריך את זה בואו נניח שיש לנו סדרה של מספר קבועים שאנחנו רוצים שיהיו לנו במערכת שכל קבוע מציין דבר מסוים בואו ניקח דוגמא נניח שיש לנו מערך נכניס לתוכו מספר פריטים
בוא נניח שאנחנו רוצים פונקציה שתציג לנו את המערך אבל שתוכל להציג אותו באחת משתי שיטות או בשורה או בטור כאן אנחנו רואים שיש לנו שתי אפשרויות או שורה או טור מבחינתנו אלה יכולים להיות מיוצגים על ידי שני קבועים בוא נניח שאם היינו שולחים לפונקציה את המערך ואת המספר 1 אנחנו רוצים להציג את המערך בשורה
אם היינו שולחים את המערך ואת המספר 2 אנחנו רוצים להציג את המערך בטור אז בעצם אנחנו רואים שהפונקציה מצפה לקבל את המערך ואיזשהו קבוע שהוא מסדרה סופית וקבועה של ערכים או אחד או שתיים.
בואו נכתוב את הפונקציה הזאת. יש לנו פה static void print array מקבלת מערך ובוא נניח שהיא תקבל גם איזשהו קבוע אינטג'רי שנקרא display ולפי ה-display אנחנו מציגים את המערך.
בואו נרוץ על כל המערך ונציג את הדבר הבא קודם כל יש לנו arr על i לאחר מכן אנחנו רוצים להציג או תו שהוא enter או תו שהוא רווח.
אז אנחנו יכולים לבצע פה איזושהי בדיקה לגבי הדיספליי. אם הדיספליי שווה 1, בואו אפילו נעשה את זה בצורה כזאת. אם הוא שווה ל-1, אז אנחנו רוצים להציג רווח, אחרת הוא אמור להיות 2. אנחנו נציג enter.
בואו נקרא לפונקציה, נשלח את המערך, אנחנו רוצים לשלוח גם איזשהו מספר שמייצג את אופן התצוגה. נשלח אחד, ונראה שהמערך מוצג בשורה אחת.
נשלח שתיים, ונראה שהמערך מוצג בטור. אז אנחנו רואים שיש לנו מקרה שבו הפונקציה מצפה לקבל אחד מסדרה של ערכים קבועים, או אחד או שתיים.
וזה עובד פרפקט. אבל זה לא קוד מקצועי. למה? הסיבה שהדבר הזה הוא לא נחשב קוד מקצועי זה בגלל שמי שקורא את הקוד הזה בעצם קצת קשה לו להבין מה זה אומר המספר שנשלח.
האם המספר הזה 2 מציין את מספר הפעמים שאני רוצה להציג את המערך? האם המספר הזה 2 מציין האם אני רוצה להציג את זה בשורה או בטור, למעלה או למטה?
מה זה בדיוק אותו דיספליי שכתוב פה? אם אני עכשיו מסתכל על האינטליסנס, על הטולטיפ שיש לי, אז אני רואה דיספליי. אז ברור שבמציאות תיעוד היה עוזר לנו, ואם היינו מתעדים את הקוד בצורה מקצועית, כמו שלמדנו בעבר, אז היינו יכולים לראות מה בדיוק דיספליי, בתיעוד היינו יכולים לרשום 1 שווה row, 2 שווה column.
display זה how to display the array, 1 row, 2 column. כאשר מישהו היה משתמש בפונקציה שלנו הוא היה יכול פשוט לראות את כל מה שכתבנו למעלה מוצג פה.
display, how to display the array, 1 שווה row, 2 שווה column. אבל עדיין לא תמיד התיעוד שמופיע פה זה משהו שהוא קל מיידית להבין מה כתוב או למה הכוונה כי מתכנת שמסתכל על הקוד צריך במבט אחד להבין מה בעצם הפונקציה הזאת עושה למה שולחו לה שתיים אז אנחנו בעצם רואים שרשימה כזאת של קבועים קצת היא בעייתית כאשר אנחנו
מייצגים אותה כמספרים אוקיי אז בואו רגע נעשה שינוי ונגיד שאנחנו רוצים לבצע את הקבוע הזה או להגדיר את הקבוע על ידי סטרינג נקרא לו דיספליי אם הסטרינג הזה שווה רואו אז אנחנו רוצים להציג את זה בשורה אם הסטרינג הזה שווה קולום אנחנו רוצים להציג את זה בעמודה טוב זאת אומרת אם אני שולח רואו אז אני רואה
שהכל מוצג לי בשורה אם אני שולח קולום אני רואה שהמערכת מציגה לי את זה בעמודה כמובן שאפשר לשלוח כל מיני דברים אחרים לדוגמה בלה בלה ועדיין אני רואה שהמערכת עושה משהו אז כמובן שסטרינג זה גם כן משהו שהוא טיפה בעייתי מה גם שמישהו יכול להתבלבל ולרשום בטעות row עם שני w והוא התכוון
ל-row 1 ועדיין יש פה איזה משהו לא בסדר. אז לעבוד עם סטרינגים בשביל לייצג קבועים זה גם כן משהו שהוא טיפה בעייתי בתכנות ולא נהוג לבצע את זה. אז מה זה enum? enum מאפשר לנו להגדיר רשימה סגורה סופית וקבועה של ערכים קבועים.
כותבים enum מחוץ לקלאס, פשוט מאוד על ידי המילה enum ובסוגריים את הקבועים השונים: row.column בצורה כזאת. ל-enum אנחנו נותנים שם, לדוגמה: display.
אז יש לנו פה enum, לרשימת הקבועים הזאת יש שם שהוא נקרא display, יש לו סך הכל שני קבועים: row ו-column. כעת הדבר הזה הפך להיות טיפוס נתונים חדש שאנחנו כרגע הגדרנו.
בואו נראה. במקום string או אינטג'ר אנחנו יכולים לשלוח display, הדבר הזה הפך להיות טיפוס נתונים. אנחנו יכולים להגדיר ממנו מי ישתנה.
כעת אנחנו יכולים לבצע השוואה לאחד מהקבועים. אנחנו לא משווים האם דיספליי שווה לרואו או לקולום, הדבר הזה הוא לא נכון, אלא האם דיספליי שווה לשם האינם שנקרא דיספליי בדגדרה נקודה ואז לערך שאנחנו רוצים, לדוגמה רואו או קולום.
כאשר אנחנו שולחים ערך לתוך האינם, אנחנו שולחים אותו באותה הצורה display.row או display.column. בואו נריץ ונראה שכעת הצגנו את המערך בשורה, נשלח column ונציג את המערך ב-tour.
אנחנו לא יכולים לשלוח שום דבר אחר פרט לרשימת הקבועים הזאת. שימו לב או שאנחנו שולחים display.row או שאנחנו שולחים display.column וכעת מי שקורא את הקוד הזה יכול ללכת ולקרוא גם את התיעוד אבל אין לו צורך הוא הוא מבין לגמרי על ידי זה שהוא ממש רואה מילים במקום מספרים,
מה בדיוק הכוונה בדיספליי. אנחנו רוצים to print the array in המערך, ואנחנו רוצים להציג אותו בשורה. הוא יכול גם ללחוץ נקודה ולראות בדיוק את האפשרויות שיש פה.
להדפיס את זה נניח בעמודה. כמובן גם את ה-in-ם אפשר לתעד על ידי זה שמגדירים אותו בצורה כזאת. Displaying in one row, Displaying in one column, את ה-in-ם עצמו גם אפשר לתעד כאן.
וכעת אפשר להסתכל ולראות שאם יש לנו גישה לדיספליי אנחנו יכולים לראות פה how to display something, row אנחנו רואים פה displaying in one row ו- displaying in one column זאת אומרת שגם את האינם עצמו אנחנו יכולים לתעד שיהיה יותר ברור למי שמשתמש איתו מה כל אחד מהפריטים שלו מציין.
כעת בוא נניח שאנחנו רוצים לקלוט מהיוזר איך בדיוק להציג את המערך נניח שקלטנו את המערך הזה מהיוזר ואנחנו רוצים גם לקלוט את הקבוע שמציין איך בדיוק היוזר רוצה להציג את המערך.
עכשיו, מאחורי כל קבוע כזה רואו וקולום תמיד יושב מספר. איך אנחנו יכולים לדעת מה המספר? בואו פשוט נבצע המרה של אותו קבוע לאינטג'רים.
נבצע קאסטינג, display.row, נריץ, ונראה שמאחורי row יושב 0. זאת אומרת