Ba'zan umumiy parametrlarning o'zgaruvchilariga ba'zi boshlang'ich qiymatlarni tayinlash kerak bo'ladi, shu jumladan null. Ammo biz uni to'g'ridan-to'g'ri tayinlay olmaymiz:
T id = null;
Bunday holda, biz default (T) operatoridan foydalanishimiz kerak. U mos yozuvlar turlariga null va qiymat turlariga 0 belgilaydi:
class Account
{
T id = default(T);
}
Umumiy sinfning statik maydonlari
Umumiy sinfni ma'lum bir turga kiritishda uning statik a'zolar to'plami yaratiladi. Masalan, Account klassi quyidagi statik maydonni belgilaydi:
class Account
{
public static T session;
public T Id { get; set; } public int Sum { get; set; }
}
Endi biz sinfni ikkita turdagi int va string bilan yozamiz:
Account account1 = new Account { Sum = 5000 }; Account.session = 5436;
Account account2 = new Account { Sum = 4000 }; Account.session = "45245";
Console.WriteLine(Account.session); // 5436
Console.WriteLine(Account.session); // 45245
Natijada, Account va Account uchun sessiya o'zgaruvchisi yaratiladi.
Bir nechta umumiy parametrlardan foydalanish
Generika bir vaqtning o'zida bir nechta umumiy parametrlardan foydalanishi mumkin, bu esa har xil turlarni ifodalashi mumkin:
class Transaction
{
public U FromAccount { get; set; } // pul o'tkazmasi hisobi public U ToAccount { get; set; } // qaysi hisob raqamiga
pul o'tkazish
public V Code { get; set; } // operatsion kod
public int Sum { get; set; } // pul o'tkazmasi summasi
}
transfert miqdori Bu erda Transaction klassi ikkita umumiy parametrdan foydalanadi. Keling, ushbu sinfni qo'llaymiz:
Account acc1 = new Account { Id = 1857, Sum = 4500 }; Account acc2 = new Account { Id = 3453, Sum = 5000 };
Transaction, string> transaction1 = new Transaction, string>
{
FromAccount = acc1, ToAccount = acc2, Code = "45478758",
Sum = 900
};
Bu erda Transaction ob'ekti Account va string turlari bilan yoziladi. Ya'ni U universal parametri sifatida Account klassi, V parametri uchun string turi ishlatiladi. Shu bilan birga, siz ko'rib turganingizdek, Transaction yoziladigan sinf o'zi umumiydir.
Do'stlaringiz bilan baham: |