مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش Class ها در سی شارپ - قسمت چهارم constructor چیست؟


قسمت چهارم

در این مقاله سعی می شود تا شما را با انواع سازنده ( constructor) که  می تواند در بدنه کلاس ها (class) تعریف شود ، آشنا کنیم .

در مقالات قبلی ، از سری مقالات نوع داده کلاس (class) در سی شارپ در مورد تعریف کلاس صحبت کردیم و از آن به عنوان یک الگوی کلی برای ایجاد اشیا  (objects) یاد کردیم. همچنین گفتیم  اشیا (objects) در برنامه ، از روی  نوع داده کلاس (class) ساخته می شوند و  یک کلاس(class) می تواند نوع داده (data type) چندین شی ( object) باشد . و تاکید کردیم که شی (object) با کلاس (class) متفاوت است. در ادامه به مقدار دهی اشیا (objects) پرداختیم و گفتیم که مانند متغیر های (variables) از انواع دیگر باید قبل از استفاده مقدار دهی شود و از سازنده ها (constructor) به عنوان روش مقدار دهی متغیر ها نام بردیم و  توضیح داده شد که چگونه یک سازنده (constructor) در بدنه کلاس تعریف می شود و توسط شی (object) فراخوانی می گردد. حال در ادامه انواع موجود از سازنده (constructor)  را که در بدنه نوع داده کلاس در سی شارپ می تواند تعریف شود ، همراه با مثال بیشتر بررسی می کنیم.

 

سازنده پیش فرض (default constructor) :

 در مقاله قبلی به صورت کامل در مورد آن صحبت کردیم در اینجا تنها برای یاد آوری اشاره می کنیم که سازنده ای (constructor) بدون پارامتر ورودی بود و این امکان وجود دارد که توسط برنامه نویس نیز تعریف شود و اگر تعریف نشود به صورت پیش فرض توسط کامپایلر نیز می تواند ایجاد شود و می تواند در زمان تعریف شی (object) فراخوانی شود .

نکته :

کامپایلر زمانی سازنده پیش فرض  را ایجاد می کند که هیچ سازنده ای (چه سازنده پیش فرض و چه سازنده با پارامتر ) توسط برنامه نویس در بدنه نوع داده کلاس در سی شارپ تعریف نشده باشد .

مثال :  خطا به خاطر عدم ایجاد سازنده توسط کامپایلر

 


namespace ClassStatment

{

    public class person

    {

        // parameterized constructor

        public person(string personName, string IDNumber)

        {

            name = personName;

            identityNumber = IDNumber;

        }

        public string name { get; set; }

        public string identityNumber { get; set; }


        public string print()

        {
            return "name=" + name + " " + " identityNumber=" + identityNumber;
        }

     }

    class Program

        { 
          static void Main(string[] args)

            {               

                person Operson = new person(); 
            }

        }

    }

 

در این مثال با توجه به اینکه سازنده با پارامتر (parameterized constructor) توسط برنامه نویس تعریف شده است در نتیجه سازنده پیش فرض (default  constructor) توسط کامپایلر ایجاد نخواهد شد (زیرا یک سازنده در بدنه کلاس وجود دارد) و  در نتیجه ، در زمان تعریف شی ، با فراخوانی سازنده بدون پارامتر ، با خطای زیر مواجه خواهیم شد زیرا کامپایلر انتظار فراخوانی سازنده با پارامتر (parameterized constructor)  را دارد : ( البته این به این معنا نیست که سازنده پیش فرض (default constructor) با وجود سازنده با پارامتر (parameterized constructor)  نمی تواند توسط برنامه نویس ایجاد شود .)

 

سازنده با پارامتر (parameterized constructor) :

سازنده ای که دارای پارمتر ورودی است سازنده با پارامتر (parameterized constructor) نامیده می شود و پارامتر ها باید در زمان فراخوانی سازنده ، به متد سازنده ارسال شوند. استفاده از سازنده با پارامتر (parameterized constructor) معمولا برای زمان هایی که مقادیر متغیر ها بسته به موقعیت در برنامه تغییر می کند ، بسیار مناسب است ، زیرا مقادیر مورد نظر را می توان از طریق ارسال پارامتر در متغیر ها  قرار داد.

 

مثال  تعریف و فراخوانی یک سازنده با پارامتر (parameterized constructor)  :

namespace ClassStatment
{

  public class person

    {

        //default constructor

        public person()

        {
            name = "test";
            identityNumber = "1234667";
        }


        // parameterized constructor

        public person(string personName, string IDNumber)

        {
            name = personName;
            identityNumber = IDNumber;
        }

        public string name { get; set; }
        public string identityNumber { get; set; }

    }

    class Program
        {
          static void Main(string[] args)

            {
                  person  Operson  = new person ("ahamd" , "123453");
                Console.WriteLine(Operson.print());
            }
        }
 }

 

در این مثال با فراخوانی سازنده با پارامتر (parameterized constructor) در زمان تعریف شی (object) با نام Operson ، از آنجا که سازنده از نوع با پارامتر (parameterized constructor) است باید پارامتر های آن به آن ارسال شود. مقادیر ارسال شده با توجه به کد در بدنه سازنده (constructor)  در دو  متغیر  name و identityNumber قرار می گیرد و در نتیجه با فراخوانی متد print ( که در ان مقادیر این متغیرها در کنار یکدیگر قرار می گیرند ) خروجی به صورت رو برو خواهد بود :

name=ahmad identityNumber=123453

 

 

Constructor overloading :

 در مورد سازنده ها نیز مانند متد ها در سی شارپ که می توانیم چندین متد هم نام با پارامتر های متفاوت داشته باشیم ، می توان چندین سازنده با پارامتر های متفاوت (different method signature) و همین طور چندین سازنده با پارامتر  و یک سازنده بدون پارامتر (default constructor) داشت.

مثال :  تعریف چندین سازنده (constructor) در یک کلاس (class)

n

namespace ClassStatment
{

  public class person

    {
        //default constructor
        public person()

        {
            name = "test";
            identityNumber = "1234667";
        }

       // parameterized constructor
        public person(string personName, string IDNumber)

        {
            name = personName;
            identityNumber = IDNumber;
        }

        public string name { get; set; }
        public string identityNumber { get; set; }


        public string print()

        {
            return "name=" + name + " " + " identityNumber=" + identityNumber;
        }

    }

   class Program
     {  

        static void Main(string[] args)

            {
                person  Operson1  = new person ("ahamd" , "123453");
                person Operson2 = new person();


                Console.WriteLine(Operson1.print());
                Console.WriteLine(Operson2.print());

             }
     }
}

  در این مثال در کلاس person دو تا سازنده (constructor) وجود دارند که یکی بدون پارامتر است و دیگری دو تا پارامتر ورودی دارد در  زمان تعریف شی (object) هر دو سازنده (constructor) می توانند فراخوانی شوند. و در نتیجه خروجی  قطعه کد بالا به صورت زیر خواهد بود :

name=ahmad identityNumber=123453

name=test  identityNumber=1234667

 

در مقاله بعدی در مورد بقیه انواع سازنده ها گفته خواهد شد.

 

گرد اوری : سمانه وزیریان

فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…

توضیحات کلی مجموعه:   آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…
فصلِ: 9 , تعداد قسمت ها: 59 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…

توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…
فصلِ: 13 , تعداد قسمت ها: 120 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…

دوره صفر تا صد  آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…
فصلِ: 4 , تعداد قسمت ها: 14 , سطح: مقدماتی

این فصل در یک نگاه:

توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …

به نام خدا   بازی‌سازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازی‌ساز حرفه‌ای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…
فصلِ: 11 , تعداد قسمت ها: 92 , سطح: صفر تا صد

این فصل در یک نگاه:

اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…

مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید