اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
2 سال پیش / خواندن دقیقه

ساختار ها (struct) در سی شارپ (قسمت دوم)

زبان سی شارپ دارای نوع داده ای به نام struct است که همچون یک ظرف ، مجموعه ای از متغیر های بهم مرتبط را میتوان در آن قرار داد. این نوع بسیار شبیه به کلاس هاست اما دارای محدویت های بیشتری نسبت به کلاس هاست. در این فصل با struct ها در زبان سی شارپ آشنا میشویم.

ساختارها

struct در زبان سی شارپ یک نوع value type محسوب میشود. وقتی یک struct ایجاد میشود متغیرهایی که در آن تعریف می شوند مقدار واقعی داده ها را نگهداری می کنند. وقتی struct به یک متغیر جدید انتساب داده می شود مقداری کپی از آن در متغیر جدید قرار می‌گیرد. این موضوع نشان دهنده این است که ساختار یک value type است. 

برای تعریف یک ساختار از کلمه کلیدی struct استفاده می کنیم.ساختار ها همچون یک ظرف تعدادی متغیر مرتبط به هم را در خود نگه میدارند. نمونه مثال زیر نحوه تعریف یک ساختار را نشان میدهد :

public struct PostalAddress
{    // Fields, properties, methods and events go here...
}

یک مثال کامل تر از تعریف یک struct را در زیر مشاهده می کنید :

public struct CoOrds
{    public int x, y;
    public CoOrds(int p1, int p2)    {        x = p1;        y = p2;    }
}

ساختارها از جهاتی بسیار شبیه کلاس ها هستند. البته آنها نسبت به کلاس ها بسیار محدودتر بوده و البته سریع تر هستند.

نکاتی در مورد struct ها

به چند نکته مهم از ساختار ها توجه کنید :

  • در ساختارها فیلد ها نمی توانند مقداردهی اولیه شوند. فقط در صورتی که فیلد ها const و یا static تعریف شوند می توانند مقداردهی اولیه شوند.
  • یک ساختار نمی تواند همچون کلاس ها دارای سازنده پیش فرض باشد (منظور از سازنده های پیش فرض، سازنده هایی هستند که هیچ پارامتری ندارند).
  • ساختارها در هنگام انتساب به یک متغیر جدید کپی می شوند. در واقع آنها value type هستند و این برخلاف کلاس هاست که reference type هستند.
  • برخلاف کلاس‌ها ، ساختار ها می توانند بدون کلمه کلیدی new مقدار دهی اولیه شوند.
  • ساختار ها می توانند دارای سازنده های پارامتر دار باشند. یک ساختار نمی‌تواند از ساختار و یا کلاسی دیگر ارث بری کند.
  • ساختار ها می توانند اینترفیس ها را پیاده سازی کنند.

چند مثال از ساختار ها

نمونه مثال زیر تعریف و مقدار دهی ساختارها را با سازنده های مختلف نشان می دهد :

public struct CoOrds
{    public int x, y;
    public CoOrds(int p1, int p2)    {        x = p1;        y = p2;    }
}

اکنون در برنامه از ساختار بالا استفاده میکنیم :

// Declare and initialize struct objects.
class TestCoOrds
{    static void Main()    {        // Initialize:           CoOrds coords1 = new CoOrds();        CoOrds coords2 = new CoOrds(10, 10);
        // Display results:        Console.Write("CoOrds 1: ");        Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);
        Console.Write("CoOrds 2: ");        Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);
        // Keep the console window open in debug mode.        Console.WriteLine("Press any key to exit.");        Console.ReadKey();    }
}
/* Output:    CoOrds 1: x = 0, y = 0    CoOrds 2: x = 10, y = 10 */

 

نمونه مثال زیر یک ویژگی از ساختار ها را نشان می‌دهد که منحصر به آنهاست. در نمونه مثال زیر شی CoOrds بدون استفاده از مقدار new ایجاد شده است :

public struct CoOrds
{    public int x, y;
    public CoOrds(int p1, int p2)    {        x = p1;        y = p2;    }
}
// Declare a struct object without "new."
class TestCoOrdsNoNew
{    static void Main()    {        // Declare an object:        CoOrds coords1;
        // Initialize:        coords1.x = 10;        coords1.y = 20;
        // Display results:        Console.Write("CoOrds 1: ");        Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);
        // Keep the console window open in debug mode.        Console.WriteLine("Press any key to exit.");        Console.ReadKey();    }
}
// Output: CoOrds 1: x = 10, y = 20


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع