می خواستم بدونم سازنده کلاس یا 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 هم آشناتون کنم. وقتی شما یک نمونه از یک کلاس را ایجاد می کنید در همان لحظه اتوماتیک سازنده کلاس اجرا می شود. حالا وقتی آبجکت می خواهد از حافظه خارج شود مخرب کلاس به صورت اتوماتیک اجرا می شود و دستورات درون آن اجرا می شود. برای تعریف مخرب کلاس می توانید به صورت زیر عمل کنید.
public class Car
{
//Constructor
~ Car()
{
//Some Code
}
}
همان طور که مشاهده می کنید مخرب کلاس هم همنام با نام خود کلاس می باشد فقط در ابتدای آن علامت ~ و یه فاصله می آید.
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
661
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3172
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3251
- پاسخ :
1
|
تاریخ :
1403/04/12
- ساعت :
07:27:00 PM
- بازدید :
658
- پاسخ :
0
|
تاریخ :
1403/01/29
- ساعت :
08:08:00 AM
- بازدید :
688
- پاسخ :
4
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2008
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
75
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|