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

آموزش Class ها در سی شارپ - قسمت پنجم


قسمت پنجم :

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

همان طور که در مقاله قبلی به آن اشاره شده ، سازنده ها (constructors) را متد های (methods) هم نام با کلاس معرفی کردیم و اشاره کردیم که از آن ها برای مقدار دهی به متغیر ها ، در زمان تعریف شی استفاده می شود و همچنین اشاره کردیم که در نوع داده کلاس (class) در سی شارپ چندین نوع سازنده (constructor)  وجود دارد : سازنده پیش فرض (default constructor) ، سازنده با پارامتر (parameterized constructor) ، سازنده استاتیک (static constructor) ، سازنده خصوصی (private constructor) و سازنده کپی (copy constructor). در مورد سازنده پیش فرض (default constructor) و سازنده با پارامتر (parameterized constructor) در دو مقاله قبلی صحبت کردیم. در این مقاله با دیگر انواع سازنده (constructor) در نوع داده کلاس (class) در سی شارپ آشنا می شویم .

سازنده کپی (copy constructor)  :

این نوع سازنده (constructor) به عنوان ورودی ، شی (object) دریافت می کند. نوع داده کلاس این شی (object) ، با نوع داده کلاسی که در آن سازنده (constructor) تعریف می شود باید یکی باشد ، به عبارت دیگر هر دو  باید به یک کلاس تعلق داشته باشند. می توان سازنده کپی (copy constructor) را یک نوع سازنده با پارامتر (parameterized constructor) دانست که پارامتر ورودی آن شی ای (object) هم نوع با کلاس سازنده است. در  بدنه سازنده کپی (copy constructor) ، با استفاده از مقادیر شی ارسال شده به عنوان پارمتر ورودی ، متغیر ها مقدار دهی می شوند .

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


namespace ClassStatment


{   

    public class person

    {

        // parameterized constructor

        public person(string personName, string IDNumber)

        {

            name = personName;
            identityNumber = IDNumber;

        }

        //copy constructor

        public person(person  Pperson)

        {
            name = Pperson.name;
            identityNumber = Pperson.identityNumber;

        }

        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 oldPerson = new person("ahmad" , "123432");
                person newPerson = new person(oldPerson);

               // after call copyConstructor

                Console.WriteLine("oldPerson  info : " + oldPerson.print());
                Console.WriteLine("newPerson  info : " + newPerson.print());


                // after change newPerson Object properties

                newPerson.name = "ali";

                Console.WriteLine("oldPerson  info : " + oldPerson.print());
                Console.WriteLine("newPerson  info : " + newPerson.print());   
 

             }

        }
 }

 

در این مثال در کلاس person دو تا سازنده (constructor) تعریف شده است. سازنده اول ،  از نوع سازنده با پارمتر (parameterized  onstructor) است که مقادیر  متغیر ها،  را به عنوان پارامتر ورودی دریافت می کند. سازنده دوم از نوع سازنده کپی ( copy constructor) است که به عنوان ورودی شی ای  (object) با نام Pperson دریافت می کند. نوع داده کلاس ، شی ورودی از نوع کلاس person است. در بدنه این سازنده (constructor) مقادیر خصوصیات شی Pperson در متغیر ها کپی می شوند. در  متد  main ، ابتدا شی oldPerson را از نوع کلاس person تعریف می کنیم و با فراخوانی سازنده با پارامتر (parameterized  constructor) آن را مقدار دهی می کنیم .حال یک نمونه از کلاس person با نام oldPerson داریم. در دستور بعدی شی دیگری با نام newPerson تعریف شده است ، اما این بار برای مقدار دهی شی ­newPerson ، سازنده کپی ( copy constructor) فراخوانی می شود و شی oldPerson را که دستور قبل ایجاد کردیم به عنوان پارامتر ورودی به آن ارسال می کنیم سپس با فراخوانی متد print در هر دو شی ، مقدار متغیر های مقدار دهی شده توسط دو سازنده را نمایش می دهیم خروجی به صورت زیر خواهد بود:

oldPerson  info : name=ahmad identityNumber=123432

newPerson  info : name=ahmad identityNumber=123432

 

همانطور که مشاهده می کنیم مقادیر برای هر دو شی (object) یکی است و به بیان دیگر می توان گفت که شی دوم کپی از شی اول است.

در مرحله بعدی مقدار خصوصیت name در شی (object) دوم را تغییر داده و دوباره مقدار متغیر ها در هر دو شی را نمایش می دهیم . خروجی برابر خواهد بود با :

oldPerson  info : name=ahmad identityNumber=123432

newPerson  info : name=ali identityNumber=123432

 

مشاهده می کنیم که در قطعه کد بالا تغییر در شی newPerson ، باعث ایجاد تغییر در مقادیر شیoldPerson نشده  است ، زیرا که در بدنه کلاس مقادیر شیoldPerson با دستور انتساب در متغیر ها کپی شده است .

نکته

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

 

در  مقاله بعدی به ادامه انواع سازنده (constructor) در نوع داده کلاس در سی شارپ خواهیم پرداخت .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

فصل پنجم…

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

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

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

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

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