Каким образом можно работать с генериками в C#?

Пользователь

от ian.heidenreich , в категории: Другие , год назад

Каким образом можно работать с генериками в C#?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jeromy_ruecker , год назад

@ian.heidenreich 

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


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

  1. Объявление параметризированного класса:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public class MyClass
{
    private T value;

    public MyClass(T value)
    {
        this.value = value;
    }

    public T GetValue()
    {
        return value;
    }
}


  1. Использование параметризированного метода:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public T FindMax(T[] array)
{
    T max = array[0];
    foreach (T item in array)
    {
        if (item > max)
        {
            max = item;
        }
    }
    return max;
}


  1. Создание параметризированного интерфейса:
1
2
3
4
public interface IComparable
{
    int CompareTo(T other);
}


  1. Использование генериков в коллекциях:
1
2
3
4
List numbers = new List();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);


Генерики в C# позволяют писать более гибкий и переиспользуемый код, так как они позволяют работать с разными типами данных одновременно.

Пользователь

от gage , 4 месяца назад

@ian.heidenreich 

Вот более подробные способы работы с генериками в C#:

  1. Создание обобщенных классов и методов:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public class GenericList<T>
{
    private List<T> list = new List<T>();
    
    public void Add(T value)
    {
        list.Add(value);
    }

    public T Get(int index)
    {
        return list[index];
    }
}


  1. Ограничения типов: Вы можете ограничить типы, с которыми может работать обобщенный класс или метод, используя ключевые слова where и различные ограничения. Например:
1
2
3
4
public class GenericList<T> where T : IComparable
{
    // код
}


В этом случае T должен реализовать интерфейс IComparable.

  1. Обобщенные делегаты:
1
public delegate T AddTwoValues<T>(T value1, T value2);


Такой делигат может быть использован для обобщенных методов или классов, которые принимают делегаты.

  1. Обобщенные интерфейсы:
1
2
3
4
5
6
public interface IRepository<T>
{
    void Add(T item);
    void Delete(T item);
    IEnumerable<T> GetAll();
}


  1. Обощенные классы в коллекциях:
1
Dictionary<string, int> keyValuePairs = new Dictionary<string, int>();


Где string и int - обобщенные типы.


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