Middle
Kas on võimalik piirata tüüpe, mida kasutaja C#-i kaudu šabloni kaudu edastab?
sobes.tech AI
Vastus AI-lt
Jah, kasutades üldtüüpide piiranguid (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T peab rakendama IMyInterface
{
// ...
}
public class AnotherGenericClass<T> where T : class // T peab olema viidetüüp
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T peab olema väärtustüüp
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Kombineeritud piirangud
{
// ...
}
Piirangute tüübid:
where T : struct: Tüüp peab olema väärtustüüp (mitte nullable).where T : class: Tüüp peab olema viidetüüp.where T : new(): Tüüp peab omama avalikku parameetriteta konstruktorit. Seda piirangut ei saa kasutada koosstructjaclass-iga.where T : BaseClass: Tüüp peab pärimaBaseClass-ist või olema iseBaseClass.where T : IInterface: Tüüp peab rakendamaIInterfaceliidest.where T : U: Tüüp peab olema või pärimaU, kusUon teine tüübiparameeter.
Võite kombineerida mitu piirangut, neid eraldades komaga. Põhja- või liidese piirangud peavad olema esimesed.