Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
C# programlama dilinde “generic constraints” (generic kısıtlamalar), generic tiplerin (generic types) veya metotların kullanımını sınırlayan ve belirli şartları karşılamalarını gerektiren kurallardır. Bu kısıtlamalar, generic tipleri daha spesifik ve belirli senaryolar için kullanılabilir hale getirir. Bu konu, generic tiplerin veya metotların daha güvenli ve kontrol edilebilir olmalarını sağlar.
Önce, bir kısıtlama olmadan generic bir sınıf örneği gösterelim:
public class MyGenericClass<T>
{
private T data;
public MyGenericClass(T value)
{
data = value;
}
public T GetData()
{
return data;
}
}
Bu generic sınıf, herhangi bir tür için kullanılabilir ve herhangi bir kısıtlama içermez. Ancak bazen, daha spesifik davranışları gerektiren senaryolar vardır.
Belirli bir generic sınıfın sadece karşılaştırılabilir türlerle çalışmasını istiyorsanız, IComparable arayüzünü kullanabilirsiniz:
public class MyGenericClass<T> where T : IComparable
{
private T data;
public MyGenericClass(T value)
{
data = value;
}
public T GetData()
{
return data;
}
}
Bu kısıtlama sayesinde, T türü yalnızca IComparable arayüzünü uygulayan türlerle sınırlıdır. Bu, sınıfın içinde karşılaştırma işlemleri yapabileceğiniz anlamına gelir.
Belirli bir generic sınıfın yalnızca yapısal türlerle çalışmasını istiyorsanız, aşağıdaki gibi bir kısıtlama ekleyebilirsiniz:
public class MyGenericClass<T> where T : struct
{
private T data;
public MyGenericClass(T value)
{
data = value;
}
public T GetData()
{
return data;
}
}
Bu kısıtlama, T türünün bir değer türü (struct) olmasını sağlar.
Yalnızca referans türleriyle (class) çalışmasını istediğiniz bir generic sınıf veya metot tanımlamak için aşağıdaki kısıtlamayı kullanabilirsiniz:
public class MyGenericClass<T> where T : class
{
private T data;
public MyGenericClass(T value)
{
data = value;
}
public T GetData()
{
return data;
}
}
Bu, T türünün bir sınıf (class) veya sınıf türetilmiş bir tür olmasını garanti eder.
Belirli bir sınıftan türetilmiş (inheritance) nesnelerle çalışmasını istiyorsanız, aşağıdaki gibi bir kısıtlama ekleyebilirsiniz:
public class MyGenericClass<T> where T : MyBaseClass
{
private T data;
public MyGenericClass(T value)
{
data = value;
}
public T GetData()
{
return data;
}
}
T
türünün MyBaseClass
sınıfından türetilmiş bir sınıf olmasını gerektirir.Generic constraints, C# programlamasında tip güvenliği sağlamak, hataları önlemek ve belirli senaryolara özgü gereksinimleri karşılamak için güçlü bir araçtır. Kısıtlamaları kullanarak, generic tipleri daha kesin bir şekilde tanımlayabilir ve kullanabilirsiniz.
Bir sonraki yazıda görüşmek dileğiyle!”