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


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;}
}

6

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

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.