pencilCake
pencilCake

Reputation: 53243

What is the syntax for a default constructor for a generic class?

Is it forbidden in C# to implement a default constructor for a generic class?

If not, why the code below does not compile? (When I remove <T> it compiles though)

What is the correct way of defining a default constructor for a generic class then?

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

Compile Time Error: Error 1 Invalid token '(' in class, struct, or interface member declaration

Upvotes: 102

Views: 69144

Answers (3)

Peerhenry
Peerhenry

Reputation: 209

And if you need to inject an instance of the type:

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}

Upvotes: 10

RogerW
RogerW

Reputation: 516

And if you need the Type as a property:

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

    public Type TheType { get;}
}

Upvotes: 13

Trevor Pilley
Trevor Pilley

Reputation: 16393

You don't provide the type parameter in the constructor. This is how you should do it.

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

Upvotes: 168

Related Questions