В C# ограничение — это способ указать ограничения на типы, которые можно использовать в качестве параметров универсального типа. Ограничения можно использовать для обеспечения соответствия аргумента универсального типа определенным требованиям, например реализации определенных интерфейсов или наличия конструктора по умолчанию.
Вот некоторые распространенные методы использования ограничений в C# с примерами кода:
-
Ограничение интерфейса:
public interface ISampleInterface { void SampleMethod(); } public class MyClass<T> where T : ISampleInterface { public void DoSomething(T obj) { obj.SampleMethod(); } } -
Ограничение базового класса:
public class MyBaseClass { public void BaseMethod() { // Code } } public class MyClass<T> where T : MyBaseClass { public void DoSomething(T obj) { obj.BaseMethod(); } } -
Ограничение конструктора:
public class MyClass<T> where T : new() { public void CreateAndDoSomething() { T obj = new T(); // Code } } -
Ограничение типа значения:
public class MyClass<T> where T : struct { public void DoSomething(T value) { // Code } } -
Ограничение ссылочного типа:
public class MyClass<T> where T : class { public void DoSomething(T obj) { // Code } }
Это всего лишь несколько примеров того, как ограничения можно использовать в C#. Вы можете объединить несколько ограничений, чтобы создать более конкретные ограничения для параметров универсального типа.