مفهوم سازنده (Constructor) در #C
پنجشنبه 3 دی 1394سازنده نوع به خصوصی از یک متد در کلاس می باشد و زمانی که نمونه ای از کلاس ایجاد شود، به صورت خودکار فراخوانی می گردد. سازنده برای مقدار دهی اولیه شی و تخصیص حافظه به یک کلاس مورد استفاده قرار می گیرد. زمانی که نمونه یا شیئ ای از کلاس ایجاد شود، فیلدهای خصوصی(Private) کلاس نیز مقداردهی اولیه می شوند. وقتی که ما سازنده را برای کلاس ایجاد نکنیم، کامپایلر به صورت اتوماتیک، یک سازنده پیش فرض برای کلاس ایجاد می کند. نام سازنده همیشه هم نام کلاس است.
نحوه نوشتن سازنده یک کلاس
[سطح دسترسی به کلاس] نام کلاس([پارامترها]) { }
انواع سازنده ها
-سازنده پیش فرض(Default)
-سازنده پارامتردهی شده (Parameterized)
-سازنده ایستا(Static)
-سازنده خصوصی (Private)
سازنده پیش فرض(Default)
به سازنده ای می گویند که هیچ نوع پارامتری برای آن تعریف نشده باشد به عبارت دیگر بدون پارامتر است. این سازنده مقادیر مشابه در هر نمونه(instance) از کلاس را مقدار دهی می کند.
using System; namespace ConstructorExample { public class Employee { public string EmployeeName; public string EmployeeAddress; //Default Constructor public Employee() { EmployeeName = "Mukesh Kumar"; EmployeeAddress = "New Delhi"; } } class Program { static void Main(string[] args) { Employee emp = new Employee(); Console.WriteLine("Name of Employee :" + emp.EmployeeName); Console.WriteLine("Address of Employee :" + emp.EmployeeAddress); Console.ReadLine(); } } }
سازنده پارامتردهی شده (Parameterized)
سازنده ای است که حداقل یک پارامتر دارد. با استفاده از این نوع سازنده می توانیم هر نمونه از کلاس را با مقادیر متفاوت مقدار دهی کنیم.
using System; namespace ConstructorExample { public class Employee { public string EmployeeName; public string EmployeeAddress; //Parameterized Constructor public Employee(string name, string address) { EmployeeName = name; EmployeeAddress = address; } } class Program { static void Main(string[] args) { Employee emp = new Employee("Mukesh Kumar", "New Delhi"); Console.WriteLine("Name of Employee :" + emp.EmployeeName); Console.WriteLine("Address of Employee :" + emp.EmployeeAddress); Console.ReadLine(); } } }
سازنده ایستا(Static)
سازنده استاتیک برای مقدار دهی هر نوع داده استاتیک از کلاس یا انجام هر عملی(متد) که باید یک بار اجرا شود، مورد استفاده قرار می گیرد. سازنده استاتیک به صورت خودکار و قبل از اولین نمونه سازی از کلاس یا هر داده استاتیک فراخوانی می شود. این سازنده یک بار برای هر تعداد نمونه کلاس ایجاد می شود.
using System; namespace ConstructorExample { public class Employee { public static readonly long Baseline; public string EmployeeName; public string EmployeeAddress; //Static Constructor static Employee() { Baseline = DateTime.Now.Ticks; Console.WriteLine("Static constructor executes first"); } //Default Constructor public Employee() { EmployeeName = "Mukesh Kumar"; EmployeeAddress = "New Delhi"; Console.WriteLine("Executes after static constructor"); } } class Program { static void Main(string[] args) { Employee emp = new Employee(); Console.WriteLine("Name of Employee :" + emp.EmployeeName); Console.WriteLine("Address of Employee :" + emp.EmployeeAddress); Console.ReadLine(); } } }
نکات کلیدی سازنده استاتیک
تنها یک سازنده استاتیک می تواند در کلاس ایجاد شود.
سازنده استاتیک هیچ نوع پارامتری نمی گیرد زیرا به طور خودکار توسط CLR یا access modifier فراخوانی می شود.
این سازنده به طور خودکار و قبل از اینکه اولین نمونه کلاس ایجاد شود فراخوانی می شود.
نمی توان سازنده استاتیک را به طور مستقیم فراخوانی کرد.
چه زمانی از سازنده استاتیک استفاده می شود؟
سازنده استاتیک زمانی که کلاس های wrapper را برای کدهای مدیریت نشده ایجاد می کنید مورد استفاده قرار می گیرد. همچنین می توانید آن را زمانی که از فایل Log استفاده می کنید مورد استفاده قرار دهید و سازنده برای نوشتن ورودی ها بکار گرفته شود.
سازنده خصوصی (Private)
سازنده Private یک سازنده به خصوص است که به طور کلی در کلاسی مورد استفاده قرا می گیرد که فقط شامل تنها اعضای استاتیک باشد. اگر کلاسی فقط سازنده خصوصی داشته و هیچ نوع سازنده عمومی نداشته باشد در این حالت، امکان ایجاد نمونه جدید از کلاس وجود ندارد. در واقع private constructor از ایجاد نمونه سازی کلاس جلوگیری می کند. اما اگر بخواهید یک نمونه از کلاسی ایجاد کنید که سازنده خصوصی دارد، باید یک سازنده عمومی همراه با سازنده خصوصی ایجاد کنید.
using System; namespace ConstructorExample { public class Employee { private Employee() {} public static int currentEmployee; public static int IncreamentEmployee() { return ++currentEmployee; } } class Program { static void Main(string[] args) { Employee.currentEmployee = 50; Console.WriteLine("Current Employee is :" + Employee.currentEmployee); Console.WriteLine("Increament Employee is " + Employee.IncreamentEmployee()); Console.ReadLine(); } }; }
- C#.net
- 12k بازدید
- 9 تشکر