آموزش خصوصیات (properties) کلاس ها در سی شارپ (Get and Set)

آموزش خصوصیات (properties) کلاس ها در سی شارپ (Get and Set)

آموزش خصوصیات (properties) کلاس ها در سی شارپ (Get and Set) Propertie ها و Encapsulation

زمان مطالعه: 3 دقیقه
بازدید: 1733
پرسش و پاسخ: 0

Propertieها و Encapsulation

قبل از شروع توضیح ویژگی ها ، شما باید درک اولیه ای از "Encapsulation" داشته باشید.

منظور از Encapsulation این است که مطمئن شوید داده های "حساس" از دید کاربران پنهان مانده است. برای رسیدن به این هدف ، شما باید:

فیلدها / متغیرها را به صورت private اعلام کنید
متدهای عمومی get و set را از طریق خصوصیات (properties) برای دسترسی و به روزرسانی مقدار یک فیلد private فراهم کنید

Propertieها

از درس قبل آموخته اید که متغیرهای private فقط در همان کلاس قابل دسترسی هستند (یک کلاس خارج به آن دسترسی ندارد). با این حال ، گاهی اوقات ما نیاز به دسترسی به آنها داریم و این می تواند با properti ها انجام شود.

یک property مانند ترکیبی از یک متغیر و یک متد است و دارای دو متد است: یک متد دریافت (get) و یک متد مقداردهی (set) :

class Person
{
  private string name; // field

  public string Name   // property
  {
    get { return name; }   // get method
    set { name = value; }  // set method
  }
}


خصوصیت Name با قسمت name مرتبط است. این یک تمرین خوب است که از یک نام برای فیلد و خصوصیت استفاده کنید ، اما با حرف اول بزرگ.

متد get مقدار نام متغیر را برمی گرداند.

متد set مقداری را به متغیر name اختصاص می دهد. کلمه کلیدی مقدار نشان دهنده مقداری است که به خاصیت اختصاص می دهیم.

اگر آن را کاملاً درک نکردید ، به مثال زیر نگاهی بیندازید.

اکنون می توانیم از ویژگی Name برای دسترسی و به روزرسانی قسمت خصوصی کلاس Person استفاده کنیم:

class Person
{
  private string name; // field
  public string Name   // property
  {
    get { return name; }
    set { name = value; }
  }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

خروجی:Liam

Propertie اتوماتیک

سی شارپ همچنین یک روش راحت و کوتاه به شما ارائه می دهد ، جایی که لازم نیست فیلد را برای خاصیت تعریف کنید و فقط باید متد get و set به روش ذیل بنویسید. 

مثال زیر همان نتیجه ای را فراهم می کند که در بالا ذکر شده است. تنها تفاوت در این است که کد کمتری وجود دارد:

class Person
{
  public string Name  // property
  { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

چرا کپسوله سازی؟

  1. کنترل بهتر اعضای کلاس (امکان بهم ریختن کد خود را کاهش دهید).
  2. فیلدها را می توان فقط برای خواندن (اگر فقط از روش دریافت استفاده می کنید) یا فقط برای نوشتن (اگر فقط از روش تنظیم استفاده می کنید) تعریف کرد.
  3. انعطاف پذیر: برنامه نویس می تواند بدون تأثیر بر قسمت های دیگر ، بخشی از کد را تغییر دهد.
  4. افزایش امنیت داده ها.
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده