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

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


قسمت ششم 

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

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

سازنده خصوصی (private constructor) :

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

مثال : تعریف سازنده خصوصی ( private constructor) :

namespace ClassStatment

{   

    public class rectangle

    {

        public static double area(double width, double height)

        {
            return (width + height) * 2;
        }


        private rectangle ()

        { }

  
     }
        class Program

        {

            static void Main(string[] args)

            {

                rectangle oRectangle = new rectangle();

            }
        }

 }

 در این مثال در کلاس rectangle یک سازنده خصوصی (private constructor) تعریف شده است ، در نتیجه در متد main ، در زمان تعریف شی oRectangle و فراخوانی سازنده (constructor) با خطای زیر روبرو خواهیم شد. زیرا این سازنده ، یک سازنده خصوصی (private constructor) است و فراخوانی آن خارج از کلاس(class)  امکان ندارد.

 

نکته

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

سازنده استاتیک (static constructor) :

سازنده استاتیک (static constructor) برای مقدار دهی داده های استاتیک (static data) در نوع داده کلاس در سی شارپ به کار می رود (در مورد داده (data) استاتیک (static) در مقالات بعدی بحث می شود.) . همین طور می توان از آن برای انجام عملی که فقط یک بار انجام شود نیز استفاده کرد ، مثل نوشتن در فایل log مربوط به کلاس.

سازنده استاتیک (static constructor) ، یک متد بدون پارامتر (parameters) و نوع داده برگشتی (return type) است که به صورت خودکار توسط کامپایلر ، قبل از ایجاد اولین نمونه (instance) از کلاس ، یا دسترسی به اعضای استاتیک کلاس ، فراخوانی می شود .

 

خصوصیات سازنده استاتیک (static constructor) :

  • استفاده از سطوح دسترسی در سازنده استاتیک (static constructor) جایز نیست.
  • سازنده استاتیک (static constructor) به عنوان ورودی نمی تواند هیچ پارامتر ورودی داشته باشد .
  • سازنده استاتیک (static constructor) نمی تواند توسط هیچ شی ای فراخوانی شود (به صورت خودکار توسط کامپایلر  فراخوانی می شود .).
  • سازنده استاتیک (static constructor) تنها یک بار در در طول دوره زمانی (life time) هر کلاسی فراخوانی می شود.
  • فراخوانی سازنده استاتیک (static constructor) به صورت خودکار ، قبل از ایجاد اولین نمونه از کلاس یا دسترسی به اعضای استاتیک کلاس صورت می گیرد.
  • کاربر نمی تواند هیچ کنترلی داشته باشد که چه زمانی سازنده استاتیک (static constructor) فراخوانی و اجرا شود .
  • در هر نوع داده کلاس در سی شارپ تنها یک تعریف سازنده استاتیک (static constructor) می تواند وجود داشته باشد.

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

namespace ClassStatment

{

    public class trainInfo

    {

        static DateTime firstTrainTime;

        int trainNum;

        static trainInfo()

        {
            firstTrainTime = DateTime.Now;

            Console.WriteLine("Invoke static constructor and set firstTrainTime =  " + 
              firstTrainTime);

        }

        public trainInfo(int num)

        {
            trainNum = num;
            Console.WriteLine(" train num "+num +" is created ");
        }

    }

        class Program

        {
            static void Main(string[] args)

            {
                trainInfo train1 = new trainInfo(10);
                trainInfo train2 = new trainInfo(30);  
           }

        }

 }

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود :

Invoke static constructor and set firstTrainTime = 2018/06/29

train num 10 is created

train num 30 is created

 با اجرای قطعه کد بالا از روی مقادیر خروجی متوجه می شویم که سازنده استاتیک (static constructor) قبل از ایجاد نمونه ها از کلاس train Info ، به صورت خودکار فراخوانی شده است و  همچنین تنها یک بار سازنده استاتیک (static constructor) اجرا شده است ، زیرا با وجود ایجاد دو شی از کلاس trainInfo تنها یک بار پیام داخل بدنه سازنده استاتیک (static constructor) نمایش داده شده است.

فصلِ: 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 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید