מדריך C# – מבנים (struct)

‏ • Sela

בחלק זה נלמד כיצד ליצור טיפוסים חדשים מסוג struct.

מהו טיפוס מסוג struct?

טיפוס מסוג struct מאפשר לנו לאחד מספר משתנים בטיפוס אחד.
בדרך כלל נרצה לעשות איחוד כזה כאשר למשתנים השונים יש משמעות לוגית כאשר הם ביחד.

כיצד מגדירים טיפוס מסוג struct?

נראה דוגמה להגדרת טיפוס מסוג struct.
נניח שאנו רוצים לייצג נקודה במישור. נצטרך לשמור שני נתונים מטיפוס double, ערך הנקודה בציר ה X וערך הנקודה בציר ה Y.
במקום להגדיר זוג משתנים בכל פעם שנרצה נקודה, נוכל להגדיר טיפוס חדש מסוג struct שיאחד לנו שני משתנים תחתיו.

קטע הקוד הבא מגדיר טיפוס מסוג struct כדי לייצג אובייקט נקודה:

struct Point
{
   
public double
X;
   
public double Y;
}

נעיר כי הגדרת ה- struct צריכה להיות מחוץ להגדרת המחלקה, שכן אנו מגידירים טיפוס חדש, בדומה להגדרת enum.

כיצד משתמשים בstruct שהגדרנו?

השימוש ב- struct נעשה באופן דומה למשתנה רגיל.

ראשית יש להקצות לו זיכרון בעזרת שימוש בפקודה new.

לאחר מכן נוכל לפנות למשתנים של ה- struct שלנו (שנקראים גם שדות) ולכתוב ולקרוא את הערכים שלהם.

לדוגמא, להלן קטע קוד שמגדיר אוביקט נקודה ומציב בו ערכים במשתנים:

static void Main(string[] args)
{
    Point p1 =
new Point();
    p1.X = 1;
    p1.Y = 2;
}

הגדרת struct מורכב

כעת שראינו כיצד להגדיר אוביקט מסוג נקודה, נוכל להגדיר אוביקט יותר מסובך כמו מלבן, שישתמש בהגדרת האוביקט נקודה הקיימת.

נזכור שכל מלבן ניתן לייצג ע"י שתי נקודות: הנקודה השמאלית עליונה והנקודה הימנית תחתונה.

בהתאם לכך נגדיר טיפוס מסוג struct חדש בשם Rectangle שמכיל שני משתנים מסוג Point.

בנוסף נראה כיצד אנו משתמשים באוביקט Rectangle החדש.

קוד התוכנית מובא כאן במלואו:

namespace StructDemo
{
   
struct Point
    {
       
public double
X;
       
public double
Y;
    }

   
struct Rectangle
    {
       
public Point
TopLeft;
       
public Point
BottomRight;
    }

   
class Program
    {
       
static void Main(string
[] args)
        {
           
Rectangle rect = new Rectangle();
            rect.TopLeft.X = 0;
            rect.TopLeft.Y = 0;
            rect.BottomRight.X = 100;
            rect.BottomRight.Y = 100;
        }
    }
}

תגיות: , , ,

arikp

אריק פוזננסקי הוא יועץ בכיר ומרצה בסלע. הוא השלים שני תארי B.Sc. במתמטיקה ומדעי המחשב בהצטיינות יתרה בטכניון. לאריק ידע נרחב בטכנולוגיות מיקרוסופט, כולל .NET עם C#, WPF, Silverlight, WinForms, Interop, COM/ATL, C++ Win32 ו reverse engineering.

תגובות בפייסבוק