شی گرایی در سی شارپ

توابع set و get در سی شارپ + مفهوم پراپرتی و فیلد در سی شارپ

تعریف فیلدها در داخل کلاس در سی شارپ بصورت public کار اشتباهی است. این کار از این جهت اشتباه است که برنامه نویس نمی تواند مقادیر ورودی را بدرستی کنترل کند. پس فیلدها را باید بصورت private تعریف کنیم. و برای بدست آوردن مقادیر و اختصاص مقادیر به آنها از توابع set و get در سی شارپ استفاده می کنیم.

مفهوم پراپرتی و فیلد

گفتیم فیلدهایی که داخل کلاس ها تعریف می شوند باید بصورت private باشند. (منظور از فیلد متغیرهایی است که در داخل کلاس تعریف می شوند).

پس چگونه به مقادیر آنها دسترسی داشته باشیم. یا یک مقدار به آنها اختصاص دهیم؟ برای چنین منظوری باید از property استفاده کنیم.

پراپرتی در سی شارپ برای اختصاص یک مقدار به فیلد های private کاربرد دارند. همچنین این امکان را به ما می دهند تا بتوانیم به مقادیر آنها دسترسی داشته باشیم.

توابع set و get در سی شارپ

get و set داخل پراپرتی ها مورد استفاده قرار می گیرند.

تعریف پراپرتی بدین صورت است که ابتدا یک پراپرتی برای فیلد مورد نظر بصورت public تعریف می کنیم. نام پراپرتی باید متفاوت تر از نام فیلد باشد، بطوری که براحتی بتوان پراپرتی ها را تشخیص داد که مربوط به کدام فیلد می باشند.

برای مثال کلاس زیر را در نظر بگیرید که دارای دو فیلد نام و فامیلی بصورت private می باشد.

حال برای تخصیص مقدار به این دو فیلد باید از set استفاده کنیم و سپس برای بدست آوردن مقدار آنها از get استفاده می کنیم.


بیشتر بخوانید: کلمه کلیدی virtual در سی شارپ


 

در اینجا برای تشخیص بهتر پراپرتی یک Underline به ابتدای نام پراپرتی ها اضافه می کنیم. در حقیقت نام پراپرتی هم نام با فیلدش هست، اما چون کامپایلر خطا می گیرد یک underline به ابتدای نام آنها اضافه می کنیم.

حال اگه بخواهیم به مقادیر یکی از این فیلدها دسترسی داشته باشیم، کافی است با ایجاد یک نمونه از کلاس پراپرتی name_ یا family_ را صدا بزنیم.

اختصاص یک مقدار به فیلد name:

حال مقدار متغیر name_ به متغیر name اختصاص داده شده است.

و برای بدست آوردن مقدار متغیر name باید بصورت زیر عمل کنید:

نکته: اگر بخواهیم فیلد مورد نظر رو فقط خواندنی تعریف کنیم، باید از get استفاده کنیم.

این موارد در مباحث شی گرایی بسیار مطرح است.

برچسب ها

حسین درویشی

برنامه نویس سی شارپ، جاوا و لاراول پی اچ پی ، علاقه مند به حوزه هوش مصنوعی و طراحی الگوریتم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Enter Captcha Here : *

Reload Image

دکمه بازگشت به بالا
بستن
بستن