معرفی
در این مقاله با سازنده ها و انواع سازنده ها در سی شارپ آشنا می شویم. پنج نوع سازنده مختلف در سی شارپ وجود دارد. برای ایجاد یک سازنده، دو بار از زبانه کلید میانبر ctor استفاده می کنیم . یک سازنده کلاس مربوطه ایجاد می کند. یک سازنده برای ایجاد اشیاء یک کلاس استفاده می شود. در زیر لیستی از سازنده ها در سی شارپ آمده است.
- سازنده پیش فرض
- سازنده پارامتری شده
- سازنده کپی
- سازنده استاتیک
- سازنده خصوصی
سازنده چیست؟
سازنده یک روش خاص است که برای مقداردهی اولیه یک شی استفاده می شود. یک سازنده در زمان ایجاد یک شیء فراخوانی می شود. نام سازنده باید با نام کلاس آن یکی باشد. یک سازنده نباید نوع بازگشت صریح داشته باشد.
تفاوت بین سازنده و روش
سازنده | روش |
یک سازنده برای مقداردهی اولیه یک شی استفاده می شود | یک روش برای آشکار کردن رفتار یک شی استفاده می شود |
سازنده نباید نوع بازگشتی داشته باشد. | روش دارای یا نداشتن نوع بازگشت است. |
یک سازنده باید همان نام کلاس باشد | نام متد ممکن است با نام کلاس یکی باشد یا نباشد |
یک سازنده به طور ضمنی فراخوانی می شود. | یک روش به صراحت فراخوانی می شود. |
سازنده پیش فرض
سازنده بدون هیچ پارامتری را سازنده پیش فرض می نامند. اگر سازنده را ایجاد نکنیم، کلاس به طور خودکار سازنده پیش فرض را هنگام ایجاد یک شی صدا می کند.
مثال
- using System;
- namespace DefaultConstructor_Demo
- {
- public class Customer
- {
- public string firstName;
- public string lastName;
- public Customer()
- {
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Customer custormer = new Customer();
- custormer.firstName = "Farhan";
- custormer.lastName = "Ahmed";
- Console.WriteLine("Full Name:"+custormer.firstName+ " "+ custormer.lastName);
- Console.ReadLine();
- }
- }
- }
سازنده پارامتر
سازنده ای که حداقل یک پارامتر داشته باشد، سازنده پارامتری نامیده می شود.
مثال
- using System;
- namespace ParameterConstructor_Demo
- {
- class ParameterConstructor
- {
- public int FirstNumber;
- public int SecondNumber;
- public ParameterConstructor(int firstNumber, int secondNumber)
- {
- FirstNumber = firstNumber;
- SecondNumber = secondNumber;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- ParameterConstructor p = new ParameterConstructor(10, 20);
- int Result = p.FirstNumber + p.SecondNumber;
- Console.WriteLine("Total:" + Result);
- Console.ReadLine();
- }
- }
- }
سازنده کپی
سازنده ای که یک شی را با کپی کردن متغیرها از یک شی دیگر ایجاد می کند، سازنده کپی نامیده می شود.
مثال
- using System;
- namespace CopyConstructor_Demo
- {
- public class Employee
- {
- public string firstName;
- public string lastName;
- public string position;
- public int salary;
- public Employee()
- {
- }
- // Copy constructor.
- public Employee(Employee employee)
- {
- firstName = employee.firstName;
- lastName = employee.lastName;
- position = employee.position;
- salary = employee.salary;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Employee emp = new Employee();
- Employee emp1 = new Employee(emp);
- Console.WriteLine("Enter your first name:");
- emp1.firstName = Convert.ToString(Console.ReadLine());
- Console.WriteLine("Enter your last name:");
- emp1.lastName = Convert.ToString(Console.ReadLine());
- Console.WriteLine("Enter your position:");
- emp1.position = Convert.ToString(Console.ReadLine());
- Console.WriteLine("Enter your salary:");
- emp1.salary = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("First Name:" + emp1.firstName);
- Console.WriteLine("Last Name:" + emp1.lastName);
- Console.WriteLine("Position:" + emp1.position);
- Console.WriteLine("Salary:" + emp1.salary);
- }
- }
- }
سازنده استاتیک
یک سازنده استاتیک برای مقداردهی اولیه هر داده ایستا یا برای انجام یک عمل خاص که فقط یک بار باید انجام شود استفاده می شود. قبل از ایجاد اولین نمونه یا ارجاع به اعضای ثابت به طور خودکار فراخوانی می شود.
ویژگی سازنده استاتیک
- یک سازنده استاتیک هیچ تغییر دهنده دسترسی را نمی پذیرد.
- سازنده استاتیک پارامتری ندارد.
- یک سازنده استاتیک به طور خودکار فراخوانی می شود تا کلاس را قبل از ایجاد اولین نمونه یا ارجاع هر عضو ایستا مقداردهی اولیه کند.
- یک سازنده استاتیک را نمی توان مستقیماً فراخوانی کرد.
- کاربر هیچ کنترلی روی زمان اجرای سازنده استاتیک در برنامه ندارد.
- استفاده معمولی از سازنده های استاتیک زمانی است که کلاس از یک فایل log استفاده می کند و سازنده برای نوشتن ورودی های این فایل استفاده می شود.
- یک کلاس فقط می تواند یک سازنده استاتیک داشته باشد.
- فقط می تواند به اعضای ثابت یک کلاس دسترسی داشته باشد.
مثال
- using System;
- namespace StaticConstructor_Demo
- {
- public class Customer
- {
- public string firstName;
- public string lastName;
- public static string discount;
- public Customer(string FirstName, string LastName)
- {
- firstName = FirstName;
- lastName = LastName;
- }
- static Customer()
- {
- discount = 10+"%";
- }
- public void CustomerDetails()
- {
- Console.WriteLine("Full Name:{0}", firstName +" "+lastName );
- Console.WriteLine("Discount:{0}",discount + "\n");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Customer c1 = new Customer("Farhan","Ahmed");
- Customer c2 = new Customer("Abdul", "Jabbar");
- c1.CustomerDetails();
- c2.CustomerDetails();
- Console.ReadLine();
- }
- }
- }
سازنده خصوصی یک سازنده نمونه خاص است. معمولاً در کلاس هایی که فقط شامل اعضای ثابت هستند استفاده می شود. اگر یک کلاس یک یا چند سازنده خصوصی داشته باشد و سازنده عمومی نداشته باشد، کلاسهای دیگر (به جز کلاسهای تودرتو) نمیتوانند نمونههایی از این کلاس ایجاد کنند. استفاده از سازنده خصوصی برای ارائه کلاس های تک تن است. کلاس singleton کلاسی است که تعداد اشیاء ایجاد شده را به یک محدود می کند. با استفاده از سازنده خصوصی میتوانیم اطمینان حاصل کنیم که نمیتوان بیش از یک شی را در یک زمان ایجاد کرد
- یکی از کاربردهای سازنده خصوصی زمانی است که ما تنها عضو ثابت را داریم.
- اجرای الگوی کلاس سینگلتون را فراهم می کند.
- پس از ارائه سازنده (خصوصی/عمومی/هر کدام)، کامپایلر سازنده بدون پارامتر public را به هیچ کلاسی اضافه نمی کند.
مثال