سازنده کلاس یا Constructor در سی شارپ چیست ؟
می خواستم بدونم سازنده کلاس یا Constructor در سی شارپ چیست ؟ همچنین چه کاربردی داره ؟ یعنی اگر برای یک کلاس سازنده ایجاد نکنیم با حالتی که سازنده داشته باشه چه فرقی داره
پاسخ هوش مصنوعی
سازنده (Constructor) در سی شارپ یک متد ویژه است که برای ایجاد و راه اندازی شیء از کلاس مورد استفاده قرار می گیرد. سازنده ها معمولاً به نام کلاس خود نام گذاری می شوند و نیازی به نوع بازگشتی ندارند. هدف اصلی سازنده این است که مقادیر اولیه را به متغیرهای اعضای کلاس اختصاص دهد و هرگونه تنظیمات اولیه لازم را انجام دهد.
اگر برای یک کلاس سازنده ایجاد نکنید، سی شارپ به صورت خودکار یک سازنده پیش فرض (parameterless constructor) ایجاد می کند که تمام مقادیر اعضای کلاس را به مقادیر پیش فرض خود (مانند 0 برای انواع عددی و null برای انواع مرجع) تنظیم می کند. بنابراین، تفاوت اصلی بین وجود یک سازنده و عدم وجود آن، این است که اگر شما سازنده ای با پارامتر برای مقداردهی اولیه اعضای خود ایجاد کنید، می توانید کنترل بیشتری بر روی مقادیر اولیه داشته باشید.
به عنوان مثال:
class Person
{
public string Name;
public int Age;
// سازنده با پارامتر
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
در این مثال، می توانیم یک شیء از کلاس Person را با نام و سن مشخص ایجاد کنیم. اگر سازنده ای وجود نداشت، نمی توانیم مقادیر را به صورت مستقیم تنظیم کنیم.
استفاده از سازنده ها این قابلیت را می دهد که هنگام ایجاد شیء اطلاعات مورد نیاز را به راحتی وارد کنیم و از وضعیت نادرست اشیاء جلوگیری کنیم.
سازنده کلاس یا Constructor در سی شارپ

در ابتدا یک تعریف رسمی از سازنده کلاس یا Constructor بهتون میگم.
سازنده کلاس یک متد از نوع Public می باشد که دقیقا هم نام با نام کلاس می باشد. این متد دارای خروجی نمی باشد ولی میتواند ورودی داشته باشد. ورودی این متد در واقع همان پارامترها یا ورودی کلاس می باشد.
در ادامه یک مثال ساده از ایجاد سازنده کلاس را مشاهده می کنید. در این مثال یک کلاس به نام Car داریم که درون خود یک سازنده به نام Car دارد.
public class Car
{
//Constructor
public Car()
{
}
}
نکته : برای ایجاد سازنده کلاس می توانید عبارت ctor را بنویسید و دو بار دکمه Tab روی صفحه کلید را بزنید. به صورت اتوماتیک سازنده کلاس ساخته خواهد شد.
کاربرد سازنده کلاس چیست ؟
کاربرد اصلی سازنده کلاس این می باشد که اگر شما کلاسی داشته باشید که برای ساختن یک نمونه از آن نیاز به چند پارامتر ورودی داشته باشد، این پارامترهای ورودی را می توانید در سازنده کلاس تعریف و حین ساختن نمونه از کلاس مقدار آن را مشخص کنید.
به عنوان مثال فرض کنید در مثال بالا که یک کلاس به نام Car داریم، میخواهیم هر موقع نمونه ای از این کلاس ایجاد شد برخی از مشخصات خودرو مثل 'رنگ'، 'وزن'، 'قیمت' و 'نام' آن هم مشخص باشد. خب پس کلاس Car در ورودی خود باید دارای 4 پارامتر باشد.
public class Car
{
//Constructor
public Car(string color, int weigth, long price, string name)
{
}
}
خب همانطور که مشاهده می کنید در سازنده کلاس Car چهار پارامتر ورودی هم ایجاد کردیم. بنابراین زمانی که قصد داشته باشیم یک نمونه از کلاس Car را تعریف و از آن استفاده کنیم باید هر چهار پارامتر مشخص شود. البته دقت کنید که برای استفاده از این کلاس باید به صورت زیر کلاس تعریف شود.
public class Car
{
public string _color;
public int _weigth;
public long _price;
public string _name;
//Constructor
public Car(string color, int weigth, long price, string name)
{
_color = color;
_weigth = weigth;
_price = price;
_name = name;
}
}
خب حالا به راحتی می توانید از این کلاس استفاده کنید و مقادیر خواسته شده را هم مشخص کنید.
Car pride = new Car('whith',850,80000000,'Pride');
//
Car pride = new Car('whith',1200,2000000000,'405Slx');
//
Car pride = new Car('whith',1250,2300000000,'pars');
در تصویر زیر هم می توانید نحوه استفاده از سازنده کلاس را در محیط ویژوال استودیو مشاهده کنید:

مخرب کلاس یا Destructor
البته این مورد جزو سوال شما نبود ولی ترجیح دادم با مخرب کلاس یا Destructor هم آشناتون کنم. وقتی شما یک نمونه از یک کلاس را ایجاد می کنید در همان لحظه اتوماتیک سازنده کلاس اجرا می شود. حالا وقتی آبجکت می خواهد از حافظه خارج شود مخرب کلاس به صورت اتوماتیک اجرا می شود و دستورات درون آن اجرا می شود. برای تعریف مخرب کلاس می توانید به صورت زیر عمل کنید.
public class Car
{
//Constructor
~ Car()
{
//Some Code
}
}
همان طور که مشاهده می کنید مخرب کلاس هم همنام با نام خود کلاس می باشد فقط در ابتدای آن علامت ~ و یه فاصله می آید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول