1. System. Object sinfi va uning usullari Umumlashtirish Umumlashganlarning cheklovlari


Download 48.75 Kb.
bet2/11
Sana19.06.2023
Hajmi48.75 Kb.
#1600338
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
11 System Object asosiy tayanch sinfidan hosilaviy sinflarni yaratish

override kalit so'zi soatni ifodalovchi Clock sinfidagi ToString usulini bekor qilish uchun ishlatiladi (odatiy virtual yoki mavhum usullarni bekor qilishda bo'lgani kabi). Bu holda ToString() usuli Hours, Minutes, Seconds xususiyatlarining bir qatorga birlashtirilgan qiymati hisoblanadi.
Person sinfi ToString usulini bekor qilmaydi, shuning uchun bu usulning standart amalga oshirilishi ushbu sinf uchun ishga tushiriladi, u oddiygina sinf nomini ko'rsatadi.
Aytgancha, bu holda biz ikkala dasturdan ham foydalanishimiz mumkin:
class Person
{
public string Name { get; set; }
public override string ToString()
{
if (String.IsNullOrEmpty(Name))
return base.ToString();
return Name;
}
}

Ya'ni, agar nom - mulk Name qiymati bo'lmasa, u bo'sh qatorni ifodalaydi, keyin asosiy amalga oshirish qaytariladi - sinf nomi. Agar nom o'rnatilgan bo'lsa, u holda N_ame xususiyatining qiymati qaytariladi. String.IsNullOrEmpty () usuli satrning bo'shligini tekshirish uchun ishlatiladi.


Shuni ta'kidlash kerakki, .NET platformasidagi turli texnologiyalar turli maqsadlarda ToString usulidan faol foydalanadi. Xususan, xuddi shu Console.WriteLine() usuli sukut bo'yicha ob'ektning satr tasvirini aniq chiqaradi. Shuning uchun, agar biz konsolga ob'ektning satrli tasvirini ko'rsatishimiz kerak bo'lsa, u holda ob'ektni Console.WriteLine usuliga o'tkazishda ToString() usulidan foydalanish shart emas - u bilvosita chaqiriladi:
private static void Main(string[] args)
{
Person person = new Person { Name = "Tom" };
Console.WriteLine(person);
Clock clock = new Clock { Hours = 15, Minutes = 34, Seconds = 53 };
Console.WriteLine(clock); // выведет 15:34:53
Console.Read();
}
GetHashCode usuli. GetHashCode usuli sizga berilgan ob'ektga yoki uning xesh kodiga mos keladigan ba'zi bir raqamli qiymatni qaytarishga imkon beradi. Berilgan raqam uchun, masalan, ob'ektlarni solishtirishingiz mumkin. Siz bunday raqamni yaratish uchun turli xil algoritmlarni belgilashingiz yoki asosiy turni amalga oshirishingiz mumkin:
class Person
{
public string Name { get; set; }
public override int GetHashCode()
{
return Name.GetHashCode();
}
}

Bunday holda, GetHashCode usuli N_ame xususiyati qiymati uchun xesh kodini qaytaradi. Ya'ni, bir xil nomga ega bo'lgan ikkita Person ob'ekti bir xil xesh kodini qaytaradi. Biroq, aslida, algoritm juda boshqacha bo'lishi mumkin.



Download 48.75 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling