Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Generic constraints

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.

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.

Kısıtlama Olmadan Generic Sınıf:

Ö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.

IComparable Kısıtlaması:

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.

Yapısal Tip (Struct) Kısıtlaması:

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.

Referans Tür (Class) Kısıtlaması:

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.

Türetilmiş Sınıf Kısıtlaması:

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;
    }
}
  1. Bu kısıtlama, 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.

“Kazanmak için pes etmeyin; pes etmek için kazanmayın.” – Unknown

Bir sonraki yazıda görüşmek dileğiyle!”

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


6 + 4 = ?