سازندهها مانند متدهای دیگر میتوانند پارامتر دریافت کنند. سازنده ای که هیچ پارامتری دریافت نمیکند سازنده پیش فرض (Default constructor) نامیده میشود. سازنده پیش فرض زمانی اجرا میشود که با استفاده از عملگر new شیء ای ایجاد میکنید اما هیچ آرگومانی را برای این عملگر در نظر نگرفته اید.
اگر برای کلاسی که طراحی میکنید سازنده ای تعریف نکرده باشید کامپایلر سی شارپ یک سازنده پیش فرض (بدون پارامتر) خواهد ساخت. این سازنده هنگام ایجاد اشیاء فراخوانی شده و مقدار پیش فرض متغیرها و پروپرتیها را با توجه به نوع آنها تنظیم مینماید. مثلاً مقدار صفر برای متغیری از نوع int یا false برای نوع bool و null برای انواع ارجاعی که در آینده در این مورد بیشتر خواهید آموخت.
اگر مقادیر پیش فرض برای متغیرها و پروپرتیها مناسب نباشد، مانند مثال ما، سازنده پیش فرض ساخته شده توسط کامپایلر همواره شیء ای میسازد که وضعیت صحیحی ندارد و نمیتواند وظیفه خود را انجام دهد. در این گونه موارد باید این سازنده را جایگزین نمود.
افزودن سازنده مثل افزودن متد به کلاس است با این تفاوت که سازنده همنام کلاس است و برای آن نوع خروجی درنظر گرفته نمیشود .
برای مثال در کلاس Rectangle با توجه به اینکه فیلدهای weight_ و height_ از 1 بالاتر هستند ، اگر در Constructor برای آن مقدار پیشفرض در نظر نگیریم ، Compiler در سازنده ی پیشفرضی که میسازد به نوع Int مقدار 0 میدهد و مارا دچار خطا میکند .
پس طبق زیر عمل میکنیم :
private int _weigth ; private int _height ; public Triangle() { _height = _weight = 1; }
همچنین در سازنده های پارامتر دار به جای انتساب مقادیر به Backend Field ها بهتر است مقادیر را در Property ها بریزم ، زیرا در Property ها میتوان عملیات Validation را قبل از دستکاری Backend Field ها انجام داد .
public Triangle(int height, int weight) { Height = height; Weight = weight; }
همچنین میتوان در یک کلاس سازنده های مختلفی داشت که هر کدام آرگومان های مخصوص خود را داشته باشد
همچنین میتوان در یک کلاس سازنده های مختلفی داشت که هر کدام آرگومان های مخصوص خود را داشته باشد