Непонятный синтаксис new()

106
17 мая 2021, 06:30

Подскажите зачем оператор new идет в объявления класс Bank(class Bank : IBank where T : Account, new())

interface IBank<out t="">
{
    T CreateAccount(int sum);
}
class Bank<t> : IBank<t> where T : Account, new()
{
    public T CreateAccount(int sum)
    {
        T acc = new T(); // создаем счет
        acc.DoTransfer(sum);
        return acc;
    }
}
Answer 1

Это ограничение, накладываемое на параметр дженерика, требующее доступность публичного конструктора без параметров. Из документации:

The new constraint specifies that a type argument in a generic class declaration must have a public parameterless constructor. To use the new constraint, the type cannot be abstract.

READ ALSO
Как запросить повышение привелегий?

Как запросить повышение привелегий?

Как запросить повышения прав пользователяНапример если это инсталятор службы, то функция установки даёт ошибку - не хватает прав

197
Загрузка данных в Entity Framework 6

Загрузка данных в Entity Framework 6

Проблема в следующем: Имеются в БД таблицы со связью некоторых таблиц многие ко многим (Отображу в виде классов EntityFramework):

105
Как отобразить коллекцию как значение в DataGrid?

Как отобразить коллекцию как значение в DataGrid?

Есть DataGrid, ItemsSource которого является List<Author>В классе Author есть публичное свойство List<Book>

107
Сортировка List&lt;GameObject&gt;

Сортировка List<GameObject>

Как можно отсортировать List по алфавиту используя gameObjectname?

352