Каков синтаксис конструктора по умолчанию для универсального класса?

87

Запрещено ли в C # реализовать конструктор по умолчанию для универсального класса?

Если нет, то почему приведенный ниже код не компилируется? (Когда я удаляю, <T>он компилируется)

Каков тогда правильный способ определения конструктора по умолчанию для универсального класса?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

Ошибка времени компиляции : Ошибка 1 Недопустимый токен '(' в объявлении члена класса, структуры или интерфейса

карандашТорт
источник

Ответы:

145

Вы не предоставляете параметр типа в конструкторе. Вот как вы должны это делать.

public class Cell<T> 
{
    public Cell()
    {
    }
}
Тревор Пилли
источник
11

И если вам нужен Тип как свойство:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}
RogerW
источник
6

И если вам нужно внедрить экземпляр типа:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Peerhenry
источник