C# xususiyatlari (properties)


ULASHISH

Xususiyatlar (properties) va inkapsulyatsiya

Xususiyatlarni tushuntirishni boshlashdan oldin "Inkapsulyatsiya" haqida asosiy tushunchaga ega bo‘lishingiz kerak.

Inkapsulyatsiyaning ma’nosi — "maxfiy" ma’lumotlarning foydalanuvchilardan yashirilishini ta’minlash. Bunga erishish uchun quyidagilarni bajarishingiz kerak:

  • maydonlarni/o‘zgaruvchilarni private deb e’lon qilish
  • private maydon qiymatini olish va yangilash uchun xususiyatlar orqali public get va set metodlarini taqdim etish

Xususiyatlar (properties)

Oldingi bobdan private o‘zgaruvchilarga faqat shu sinf ichida murojaat qilish mumkinligini (tashqi sinf ularga kira olmasligini) bilib oldingiz. Biroq ba’zan ularga murojaat qilishimiz kerak bo‘ladi — buni xususiyatlar yordamida amalga oshirish mumkin.

Xususiyat — o‘zgaruvchi va metodning birikmasiga o‘xshaydi va u ikkita metodga ega: get va set metodlari:

Misol

class Person
{
  private string name; // field

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

Misol izohi

Name xususiyati name maydoni bilan bog‘langan. Xususiyat va private maydon uchun bir xil nomdan foydalanish, lekin xususiyat nomini katta harf bilan boshlash yaxshi amaliyot hisoblanadi.

get metodi name o‘zgaruvchisining qiymatini qaytaradi.

set metodi name o‘zgaruvchisiga value’ni o‘zlashtiradi. value kalit so‘zi xususiyatga beriladigan qiymatni ifodalaydi.

Agar buni to‘liq tushunmagan bo‘lsangiz, quyidagi misolga qarang.

Endi Person sinfining private maydoniga murojaat qilish va uni yangilash uchun Name xususiyatidan foydalanishimiz mumkin:

Misol

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);
  }
}

Natija quyidagicha bo‘ladi:

Liam

O‘zingiz sinab ko‘ring »



Avtomatik xususiyatlar (qisqa yozuv)

C# qisqa yozuvli / avtomatik xususiyatlardan foydalanish imkonini ham beradi: bunda xususiyat uchun maydon aniqlash shart emas, xususiyat ichida faqat get; va set; yozish kifoya.

Quyidagi misol yuqoridagi misol bilan bir xil natija beradi. Yagona farqi — kod kamroq:

Misol

Avtomatik xususiyatlardan foydalanish:

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);
  }
}

Natija quyidagicha bo‘ladi:

Liam

O‘zingiz sinab ko‘ring »


Nega inkapsulyatsiya kerak?

  • Sinf a’zolarini yaxshiroq nazorat qilish (o‘zingiz (yoki boshqalar) kodni buzib qo‘yish ehtimolini kamaytirish)
  • Maydonlarni faqat o‘qiladigan (agar faqat get metodidan foydalansangiz) yoki faqat yoziladigan (agar faqat set metodidan foydalansangiz) qilish mumkin
  • Moslashuvchanlik: dasturchi kodning bir qismini boshqa qismlariga ta’sir qilmasdan o‘zgartira oladi
  • Ma’lumotlar xavfsizligi oshadi


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!