קטע קוד של switch יכול להסתבך בקלות רבה. כל הקוד נכנס לתוך מתודה אחת, וחלקים ממנה נקראים כמה פעמים. במקרים רבים, קטע switch מתבסס על enum. חוץ מזה, ב-#C אי אפשר לעבור ממקרה (case) אחד לשני ע”י fall-through.
פתרון יפה להסרת הסיבוכיות של switch-ים היא שימוש ב-
Dictionary<enum,delegate>
כך אפשר לחבר כל אלמנט של ה-enum למתודה משלו. אפשר לקרוא למתודה הנכונה עבור כל enum אפשרי. עוד דבר נחמד שמתאפשר זה לקרוא למתודה אחת ממתודה אחרת.
בפתרון הזה, שנכתב ב-code project, הדוגמה היא מאד פשטנית – הכנה של תבשילים מבוססי פירות – אבל בזכות זה היא קלה להבנה. בד”כ כל מה שקשור ל-delegate נראה מפחיד ומסוכן, אבל כאן יש שימוש לא מסובך ואפילו ידידותי ב-delegate, מה שמאפשר להתיידד איתם, ןזה טוב במיוחד בעידן זה של anonymous methods ו-lambda expressions.