Sobes.tech
Middle

C#-də şablon vasitəsilə istifadəçinin ötürəcəyi növləri məhdudlaşdırmaq mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, ümumi tiplər üçün məhdudiyyətlər (generic constraints) istifadə etməklə.

public class MyGenericClass<T> where T : IMyInterface // T, IMyInterface-yi həyata keçirməlidir
{
    // ...
}

public class AnotherGenericClass<T> where T : class // T, istinad növü olmalıdır
{
    // ...
}

public class YetAnotherGenericClass<T> where T : struct // T, dəyər növü olmalıdır
{
    // ...
}

public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Birgə məhdudiyyətlər
{
    // ...
}

Məhdudiyyət növləri:

  • where T : struct: Növ, dəyər növü olmalıdır (null ola bilməz).
  • where T : class: Növ, istinad növü olmalıdır.
  • where T : new(): Növ, ictimai parametresiz qurucuya malik olmalıdır. Bu məhdudiyyət, structclass ilə eyni zamanda istifadə edilə bilməz.
  • where T : BaseClass: Növ, BaseClass-dən irs almalıdır və ya BaseClass olmalıdır.
  • where T : IInterface: Növ, IInterface interfeysini həyata keçirməlidir.
  • where T : U: Növ, U olmalı və ya ondan irs almalıdır, burada U başqa bir tip parametridir.

Bir neçə məhdudiyyəti vergül ilə ayırmaqla birləşdirmək mümkündür. Əsas sinf və ya interfeys üçün məhdudiyyətlər əvvəlcə göstərilməlidir.