Generic sınıf
<T> ile generic sınıf tanımlamayı öğrenirsin.
Generic sınıf nedir?
Bir generic sınıf (genel sınıf), bir tür parametresi ile tanımlanır. T harfi en yaygın parametre adıdır; yer tutucu bir türdür. class Box<T> yazısı, Box sınıfının herhangi bir türle çalışabileceğini bildirir.
Kullanırken somut bir tür verirsin: Box<int> tam sayı kutusu, Box<string> metin kutusu olur. Derleyici her somutlaştırma için ayrı bir tür üretir; böylece tip güvenliği sağlanır ve kutulama (boxing) önlenir. Generic sınıflar, kod tekrarını azaltırken güvenliği korur.
Aynı sınıf, farklı türler
Bir generic sınıf tanımladıktan sonra onu istediğin türle somutlaştırabilirsin. Box<int> ve Box<string> aynı şablondan üretilmiş ama farklı türlere sahip örneklerdir.
İçerideki T Value özelliği, somut türle değişir: Box<int>'ta int Value, Box<string>'de string Value olur. Böylece derleyici yanlış tür atamasını derleme anında yakalar. Generic olmayan bir çözümde bu güvenlik olmazdı.
Uygulama Box<T> sınıfını tanımla
Box<T> generic sınıfını tanımla; public T Value { get; set; } özelliği olsun. Main içinde Box<int> ve Box<string> örnekleri üret; Value'lara 42 ve "Merhaba" ata. Her ikisinin Value'sunu Console.WriteLine ile yaz.
Örnek çözümü göster
class Box<T> { public T Value { get; set; } } yaz. Main'de var intBox = new Box<int> { Value = 42 }; var strBox = new Box<string> { Value = "Merhaba" }; Console.WriteLine(intBox.Value); Console.WriteLine(strBox.Value); ekle.
Örnek çözüm:
using System;
class Box<T>
{
public T Value { get; set; }
}
class Program
{
static void Main()
{
var intBox = new Box<int> { Value = 42 };
var strBox = new Box<string> { Value = "Merhaba" };
Console.WriteLine(intBox.Value);
Console.WriteLine(strBox.Value);
}
}
Kendini test et
-
Box<T> sınıfı nasıl bildirilir?
- class Box<T> { }
- class Box<T> T { }
- class Box(T) { }
- class Box : T { }
Cevabı göster
class Box<T> { } — Doğru. Tür parametresi sınıf adından sonra < > içinde yazılır.
-
Tür parametresi harfi
class Box<____> { public T Value { get; set; } }Cevabı göster
class Box<T> { public T Value { get; set; } } -
Generic parçayı anlamına eşle
- <T>
- Tür parametresi
- Box<int>
- Somut örnek
- T Value
- Tür parametreli özellik
- new Box<T>()
- Örnek üretimi