Deconstruction הוא תהליך של פירוק ערך של משתנה למספר משתנים חדשים, משהו שיכול להיות מאוד יעיל בטיפול ברשימות מסוג Tuple או מילונים למשל.
במאמר זה נעבור על מספר דוגמאות אשר מדגימות תהליך פירוק למבני נתונים ב-C#
Tuple Deconstruction
בקטע הקוד הבא ניצור רשימת Tuple ונפרק את אבריה למשתנים חדשים:
var user = ("Jimmie", "Handrill", "Handrill99@technow.co.il"); var (firstName, lastName, email) = user; Console.WriteLine(firstName); Console.WriteLine(lastName); Console.WriteLine(email);
שימו לב לשורה 3 – שם ביצענו את תהליך הפירוק.
בתוך הסוגריים נתנו שמות למשתנים החדשים, כאשר הערך שהם מכילים יהיה הערכים של רשימת ה-Tuple שיצרנו לפני זה.
כעת נוכל להדפיס את הערכים של משתנים אלו בנפרד מבלי להתייחס לרשימת ה-Tuple.
דוגמאות נוספות ל-Tuple Deconstruction במאמרים – איך לבצע איטרציה על מאפייני מחלקה, C# – JSON
פירוק מילונים
כמו שביצענו Tuple Deconstruction כמובן שנוכל לבצע תהליך פירוק גם למבני נתונים אחרים.
נניח והיה לנו צורך לפרק צמדי Key-Value ממילון למשתנים שונים לצורך הדפסתם, יכולנו לפעול כך:
var colors = new Dictionary<int, string> { {1, "Red"}, {2, "Blue"}, {3, "Green"}, {4, "Yellow"} }; foreach ((int key, string value) in colors) { Console.WriteLine($"{key}: {value}"); }
לאחר מכן השתמשנו בלולאה על מנת להדפיס משתנים אלו, וכשנפעיל את התוכנית נקבל את הפלט הבא:
שימו לב כי במקרה זה את תהליך הפירוק ביצענו בחתימת הלולאה, בין הסוגריים נתנו למשתנים את השמות – key ו-value.
פירוק מחלקה
במקרה שנרצה, נוכל גם גם לבצע תהליך פירוק למאפייני מחלקה.
לשם ההדגמה ניצור את מחלקת User ולה מאפייני שם פרטי ושם משפחה:
class User { string FirstName { get; set; } string LastName { get; set; } public User(string fname, string lname) { FirstName = fname; LastName = lname; } public void Deconstruct(out string fname, out string lname) { fname = FirstName; lname = LastName; } }
בתוך המחלקה יצרנו את המתודה – Deconstruct שמקבלת שני מאפייני Out – אחד עבור השם הפרטי, השני עבור שם המשפחה.
הערכים שיכילו פרמטרים אלו הם מאפייני המחלקה שיצרנו – FirstName ו-LastName.
את שם ושם המשפחה של המשתמש נזין בבנאי, כך שאת התוכנית נוכל לבנות כך:
User user = new("Bob", "Mana"); var (firstName, lastName) = user; Console.WriteLine($"{firstName} {lastName}");
וכשנריץ את התוכנית, נוכל לקבל את התוצאה הבאה:
לקריאה מורחבת באתר של מייקרוסופט יש ללחוץ כאן.