האם C# טובה למבני נתונים ואלגוריתמים?
כן. היא נקראת בדומה ל־Java: הטיפוסים הופכים כל צומת, הפניה ופרמטר גנרי למפורשים, ו־System.Collections.Generic מכסה את רוב המבנים במסלול הזה. כדאי לבנות שני הרגלים מוקדם. LINQ תמציתי, אבל כל OrderBy הוא מיון וכל Where הוא לולאה, כך שהוא מסתיר את העלויות שאתם לומדים לספור; ו־Array.Sort אינו יציב, וזה משנה בכל פעם שמפתחות שווים צריכים לשמור על הסדר שלהם.
איזה אוסף של .NET מתאים לאיזה מבנה נתונים?
List<T> הוא מערך דינמי, Stack<T> ו־Queue<T> מבוססים על מערך, LinkedList<T> היא רשימה מקושרת דו־כיוונית, Dictionary<TKey,TValue> ו־HashSet<T> הם טבלאות גיבוב, ו־SortedDictionary<TKey,TValue> ו־SortedSet<T> הם עצים אדומים־שחורים, מאוזנים כמו עץ ה־AVL שאתם בונים בשלב השני. SortedList<TKey,TValue> הוא זוג מערכים שנשמרים לפי סדר המפתחות, ומאז .NET 6 PriorityQueue<TElement,TPriority> היא ערימת מינימום מבוססת מערך. אין מחלקה לעץ trie או לגרף; אותם כותבים בעצמכם.
צומת של עץ או של רשימה ב־C# צריך להיות class או struct?
class. struct הוא טיפוס ערך: הוא לא יכול להכיל שדה מהטיפוס של עצמו בכלל, ובכל מקום שבו הוא מועתק, שינוי בעותק משאיר את המקור ללא שינוי. מופע של class הוא הפניה, כך שצמתים יכולים להצביע זה על זה כמו שרשימה מקושרת או עץ צריכים. שמרו את ה־structs לערכים קטנים, כמו קואורדינטה ברשת או קשת משוקללת.
האם יש ב־C# תור עדיפויות?
מאז .NET 6, כן: PriorityQueue<TElement,TPriority>, ערימת מינימום מבוססת מערך שבה כל איבר נכנס לתור עם העדיפות שלו; העבירו IComparer<TPriority> שהופך את הסדר כדי לקבל ערימת מקסימום. ב־.NET Framework ובסביבות ריצה ישנות יותר אין תור כזה, ולכן מפתחי C# כתבו במשך זמן רב ערימה משלהם או כופפו SortedSet<T> לתפקיד, ולכן היכולת לכתוב אחת עדיין חשובה. בשלב השני אתם עושים את זה.
אילו קורסים במסלול הזה לא נלמדים ב־C#?
שלושה: תכנות דינמי וסדרת הראיונות של Python, שנלמדים ב־Python, ומניפולציית ביטים, שנלמדת ב־C++. הם מופיעים אחרי השלבים, כל אחד עם קישור שפותח אותו בשפה שלו. טבלת memo ב־C# היא מערך או Dictionary, וטריקים של ביטים עוברים בקלות, עד להבחנה ש־C++ עושה: >> שומר על הסימן ב־int וממלא באפסים ב־uint.
האם צריך לדעת C# לפני שמתחילים את המסלול?
מחלקות, מתודות, מערכים, לולאות ואוספים גנריים כמו List<T>, לכל הפחות. אם הם חדשים לכם, קורס C# של Coddy מביא אתכם לשם קודם, בחינם, והמסלול הזה ממשיך מהמקום שבו הוא מסתיים.