Sobes.tech
Middle

Dasturlashda Generics qanday imkoniyatlar taqdim etadi?

sobes.tech AI

AIdan javob

Generyklar quyidagi imkoniyatlarni taqdim etadi:

  • Turlar xavfsizligini oshirish: Kod bajarilish vaqtida turdagi mos kelmaslik bilan bog‘liq xatoliklarga qarshi yanada chidamli bo‘ladi. Kompilyator turlarni faqat bajarilish vaqtida emas, balki kompilatsiya vaqtida tekshiradi.
  • Kodni qayta ishlatish: Turli ma'lumot turlari bilan ishlaydigan universal ma'lumotlar tuzilmalari, sinflar va metodlar yaratish mumkin, bu kodni takrorlash shart emas.
  • Ishlash samaradorligini oshirish: Ba'zi tillarda, generyklardan foydalanish, turlarni qo‘lda o‘zgartirish yoki asosiy sinf Object bilan ishlashga nisbatan, yanada samarali kodga olib kelishi mumkin, chunki primitiv turlarni paketlash va chiqarib olish ehtiyoji yo‘q.
  • Yaxshiroq va o‘qilishi oson API: Kutubxonalar va sinflar interfeyslari yanada intuitiv bo‘lib, ular qanday turlar bilan ishlashini ko‘rsatadi.

Java misoli:

// ArrayList generyik sinfidan foydalanish misoli
List<String> ismlar = new ArrayList<>();
ismlar.add("Alice");
// ismlar.add(123); // Kompilatsiya xatosi - tur xavfsizligi
String ism = ismlar.get(0); // Turlarni o‘zgartirishga ehtiyoj yo‘q

C# misoli:

// Generyik metoddan foydalanish misoli
public T BirinchiElementniOlish<T>(List<T> ro‘yxat)
{
    if (ro‘yxat != null && ro‘yxat.Count > 0)
    {
        return ro‘yxat[0];
    }
    return default(T); // T uchun standart qiymatni qaytaradi
}

List<int> sonlar = new List<int>() { 1, 2, 3 };
int birinchiSon = BirinchiElementniOlish(sonlar); // int bilan ishlaydi

List<string> ranglar = new List<string>() { "qizil", "yashil" };
string birinchiRang = BirinchiElementniOlish(ranglar); // string bilan ishlaydi