1. System. Object sinfi va uning usullari Umumlashtirish



tải về 70.5 Kb.
trang2/12
Chuyển đổi dữ liệu27.03.2024
Kích70.5 Kb.
#56976
1   2   3   4   5   6   7   8   9   ...   12
22-09

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.


tải về 70.5 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   12




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương