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

در این جلسه می خواهیم با توابع set و get در سی شارپ که خیلی معروف هستند آشنا شویم. در ادامه با مفهوم Property  آشنا می شویم و میفهمیم که چطور از توابع set و get در سی شارپ استفاده کنیم.

یک کلاس بنام Student ایجاد می کنیم داخل این کلاس یک سری فیلد اضافه می کنیم:

class Student
{

//……….به متغیرهای ساده ای که داخل کلاس تعریف می کنیم فیلد می گویند

private int ID;
private string Name;
private string LastName;
private int Age;

}

داخل کلاس گذاشتن سطح دسترسی متغیرها از نوع public کار درستی نیست و اگر هم سطح دسترسی متغیرها از نوع private در نظر بگیریم خارج از کلاس به این متغیرها دسترسی نداریم .

توابع Property :

به همین دلیل از توابع set و get می توان استفاده کرد که به این توابع Property می گویند.

می خواهیم توابع set و get را برای ID بنویسیم:

public int id   // ……(حتماً توجه داشته باشید اینجا پرانتز لازم ندارد )
{

به این دو تا تابع که برای دسترسی به آن فیلدها نوشتیم پراپرتی( Property) می گویند……//

get
{

return ID;

}

set
{

ID = value;

}

}

معمولاً برنامه نویسان حرفه ای یک آندرلاین( _ ) می گذارند پشت اسم فیلد که حتی اسم داخل کلاس با اسمی که خارج از کلاس می آید یکی نباشد.

class Student
{

private int _ID;
private string _Name;
private string _LastName;
private int _Age;

public int ID

   {

get

  {

return _ID;

  }

set

  {

_ID = value;

  }

             }

}

داخل پنجره فرم شده و کنترل مورد نظر را روی آن قرار می دهیم:

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

مشاهده می کنید که st.ID میاد در صورتی که داخل کلاس فیلدی بنام ID ندارم در واقع با توابع set و get چون من اسمش را گذاشتم ID دارد به _ID اشاره می کند .

private void button1_Click(object sender, EventArgs e)

{

   Student st = new Student();
st.ID = 10;
MessageBox.Show(st.ID.ToString());

}

تابع get : {تابع فقط خواندنی است .}

تابع set : {تابع فقط نوشتنی است .}

  • اگر بخواهیم این فیلد را فقط خواندنی کنیم تابع set را باید برداریم:

class Student

{

private int _ID;
private string _Name;
private string _LastName;
private int _Age;

public int ID

  {

get
{

    return _ID;

}

}

}

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

مشاهده می کنید که دیگر قادر به نوشتن مقدار برای آن نیستید و error می دهد.

  • اگر بخواهیم این فیلد را فقط نوشتنی کنیم تابع get را باید برداریم (البته این جور شرایطی خیلی کم پیش می آید.)

class Student

{

private int _ID;
private string _Name;
private string _LastName;
private int _Age;

public int ID

  {

set

   {

_ID = value;

   }

  }

}

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

مشاهده می کنید که دیگر قادر به خواندن مقدار آن نیستید و error می دهد.

برای بقیه فیلدها هم پراپرتی هایش را می نویسیم:

class Student

{

private int _ID;
private string _Name;
private string _LastName;
private int _Age;

public int ID

  {

get

       {

return _ID;

 }

set

 {

_ID = value;

  }

        }

public string Name

        {

get { return _Name; }
set { _Name = value; }

         }

public string LastName

  {

get { return _LastName; }
set { _LastName = value; }

         }

public int Age

 {

get { return _Age; }
set { _Age = value; }

 }

}

داخل فرم شده و برای بقیه متغیرها مقدار دهی می کنیم

private void button1_Click(object sender, EventArgs e)

{

Student st = new Student();
st.ID = 10;
st.Name = “Mahdi”;
st.LastName = “nik”;
st.Age = 200;

}

اینجا یک نکته برای Age دارد:

این مقداری که برای Age وارد کردیم اشتباه است چون هیچ وقت یک دانش آموز را نداریم که سنش 200 باشد . یکی از کاربردهای دیگر Property ها (پروپرتی) این است که بتوانیم مقادیر را کنترل کنیم که کاربر نتواند مقادیر نامعتبر وارد کند. بدین صورت که اگر سن دانش آموزی را بیشتر از 80 وارد کرد خطای OverflowException بدهد

public int Age

{

get { return _Age; }

set
{

           if (value > 80)
throw new OverflowException();

         _Age = value;

         }

}

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

  1. پنهان سازی انجام می دهد.
  2. از دسترسی مستقیم به فیلدهای داخل کلاس جلو گیری می کند.
  3. جلوگیری از وارد کردن مقادیر نامعتبر

 

امیدواریم از آموزش راضی بوده باشید. در جلسه بعد به آموزش Struct در سی شارپ و تفاوتش با کلاس می پردازیم.

اگر سوال یا انتقادی دارید زیر همین پست در قسمت دیدگاه ها ثبت کنید.

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 39 امتیاز: 4.2]