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

آموزش property در کلاس سی شارپ - بخش دوم


قسمت  دوازدهم

 خصیصه ( (property (2) 

در این مقاله قصد داریم تا از میان اعضای نوع داده کلاس در سی شارپ با دنباله مطالب مربوط به خصیصه (properties) آشنا شویم.

در مقاله قبلی ، خصیصه (property) را مکانیزمی برای خواندن و نوشتن در فیلدها ای (fileds) با سطح دسترسی خصوصی (private) که در بدنه کلاس تعریف شده اند تعریف کردیم. و اشاره شد که در بدنه خصیصه (property) دو تا متد با نام های get و set  وجود دارد و متد get  زمانیکه از خصیصه  (property) مقداری خوانده می شود اجرا می شود و متد set زمانیکه مقداری در خصیصه (property)  وارد می شود اجرا می گردد. و گفته شد که خصیصه (property) می تواند به صورت فقط خواندنی (read- only property) و یا فقط نوشتنی (write- only property) و یا خواندنی و نوشتنی (read-write) تعریف شود. در این مقاله قصد داریم تا با ادامه مطالب مربوط به خصیصه (properties) بحث را ادامه دهیم.

تعریف خصیصه (property) با استفاده از یک متغیر پشتیبان (backing field)

یک روش مرسوم در تعریف خصیصه (property) ، تعریف یک متغیر خصوصی پشتیبان برای هر خصیصه (property) است. که کار  این متغیر خصوصی ارسال مقدار به و دریافت مقدار از خصیصه (property) ، است و این کار در در بدنه get با استفاده از دستور  return و بدنه set با استفاده از انتساب مقدار value  انجام می شود. یک دلیل استفاده از خصیصه (property) برای انتساب و مقدار دهی یک متغیر، انجام یک سری از محاسبات و اعتبار سنجی ها در بدنه متدهای get  و set ، قبل از انتساب مقدار  است.

مثال : تعریف یک خصیصه (property) با استفاده با استفاده از یک متغیر پشتیبان

  public class bankAccount

    {

        private double _money;

        public double Money

        {
            get

            {
                return (_money);
            }

            set

            {
                if (value > 0)

                    _money = value;

                else

                    throw new ArgumentOutOfRangeException();
            }
        }
    }

 

 در این مثال ، کلاس bankAccount به منظور نگهداری اطلاعات حساب تعریف شده است و در آن از  متغیر خصوصی money_ برای نگهداری مقدار پول موجود در حساب استفاده می شود. متغیر خصوصی money_ نقش متغیر پشتیبان را برای خصیصه (property) دارد. و با استفاده از این خصیصه (property) مقدار ذخیره شده در متغیر money_ کنترل می شود. به این منظور در متد set قبل از انتساب مقدار به متغیر money_ چک می شود که مقدار وارد شده بزرگتر از صفر باشد و در غیر این صورت ، مقداری در متغیر money_ قرار نمی گیرد (نمی شود set) و  خطا نیز ایجاد می گردد.

تعریف خصیصه(property) بدون استفاده از یک متغیر پشتیبان

در تعریف خصیصه (property)  همیشه لازم نیست تا ازیک مقدار متغیر خاص استفاده کرد زیرا در بدنه متدهای get و set می توانیم مانند بدنه هر متدی هر کدی را بنوسیم  به عنوان مثال در کلاس person که در مثال زیر آورده شده است یک خصیصه (property) با نام fullName  تعریف شده است. توجه کنید که در بدنه کلاس متغیری به نام fullName وجود ندارد زیرا احتیاج به ذخیره مقدار آن نداریم و این خصیصه در واقع ترکیبی از دو متغیر name و  family را به عنوان مقدار در بدنه متد get بر می گرداند.

مثال : تعریف خصیصه (property) بدون استفاده از یک متغیر پشتیبان

    public class person

    {
        private string name;

        private string family;

        public string Name

        {
            get

            {
                return name;
            }

            set

            {
                name = value;
            }
        }

        public string Family

        {

            get

            {
                return family;
            }

            set

            {
                family = value;
            }

        }

        public string FullName

        {
            get

            {
                return name +family;
            }
                     

        }

}

 

تعریف خصیصه (property)  اتوماتیک:

 در بیشتر موارد در  تعریف خصیصه (property) در بدنه متد های get و set به ترتیب تنها عمل برگرداندن مقدار (return) و انتساب دادن مقدار صورت می گیرد. در این موارد می توان از تعریف خصیصه (property)  اتوماتیک استفاده کرد. در این تعریف در بدنه خصیصه (property)  تنها از کلمه get و set بدون هیچ بدنه ای استفاده می شود. در این حالت احتیاج به تعریف متغیر پشتیبان (backing field) نیست زیرا متغیر پشتیبان (backing field) به صورت اتوماتیک توسط کامپایلر ایجاد می شود.

مثال : تعریف خصیصه (property)  اتوماتیک

  

 public class person

    {
        public string Name

        { get; set; }

        public string Family

        { get; set; }       

    }

 

در این مثال در کلاس person دو خصیصه (property) با نام های Name و Family به صورت اتوماتیک تعریف شده اند. همانطور که گفته شد در دو متد get و set هیج بدنه ای ندارند. توجه کنید که پیاده سازی این دو خصیصه (property) در مثال قبل به صورت غیر اتوماتیک و با استفاده از متغیر پشتیبان صورت گرفته است.

نکته :

در تعریف خصیصه (property) اتوماتیک در صورت استفاده از هر دو متد get و set  هر دو باید به صورت اتوماتیک تعریف شوند.

نکته :

خصیصه (property) از انجا که یک متغیر نیست ، به عنوان پارامتر  ref و  out نمی تواند ارسال شود.

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

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