Ограничения C#: изучение ограничений параметров универсального типа на примерах кода

В C# ограничение — это способ указать ограничения на типы, которые можно использовать в качестве параметров универсального типа. Ограничения можно использовать для обеспечения соответствия аргумента универсального типа определенным требованиям, например реализации определенных интерфейсов или наличия конструктора по умолчанию.

Вот некоторые распространенные методы использования ограничений в C# с примерами кода:

  1. Ограничение интерфейса:

    public interface ISampleInterface
    {
    void SampleMethod();
    }
    public class MyClass<T> where T : ISampleInterface
    {
    public void DoSomething(T obj)
    {
        obj.SampleMethod();
    }
    }
  2. Ограничение базового класса:

    public class MyBaseClass
    {
    public void BaseMethod()
    {
        // Code
    }
    }
    public class MyClass<T> where T : MyBaseClass
    {
    public void DoSomething(T obj)
    {
        obj.BaseMethod();
    }
    }
  3. Ограничение конструктора:

    public class MyClass<T> where T : new()
    {
    public void CreateAndDoSomething()
    {
        T obj = new T();
        // Code
    }
    }
  4. Ограничение типа значения:

    public class MyClass<T> where T : struct
    {
    public void DoSomething(T value)
    {
        // Code
    }
    }
  5. Ограничение ссылочного типа:

    public class MyClass<T> where T : class
    {
    public void DoSomething(T obj)
    {
        // Code
    }
    }

Это всего лишь несколько примеров того, как ограничения можно использовать в C#. Вы можете объединить несколько ограничений, чтобы создать более конкретные ограничения для параметров универсального типа.