类型参数化抽象类的C#构造函数

时间:2016-11-20 22:37:49

标签: c# constructor abstract-class type-parameter

所以我找到了很多问题的答案是否以及为什么在抽象类中定义构造函数是可以的。

我目前正在尝试在具有类型参数的抽象类中使用参数化构造函数:

public abstract class Cell<T>
{
    int address;
    T value;

    protected Cell<T>(int address, T value)
    {

    }
}

但是c#只是拒绝它而且Intellisense完全崩溃了。 那么为什么有可能在抽象类中有一个构造函数,但是一旦抽象类得到一个类型参数,一切都会拒绝它?

2 个答案:

答案 0 :(得分:4)

从构造函数声明中删除<T>,然后一切正常。例如,这编译得很好:

public abstract class Cell<T>
{
    int address;
    T value;

    protected Cell(int address, T value)
    {

    }
}

public class CellInt : Cell<int>
{
    public CellInt(int address, int value): base(address, value) { }
}

答案 1 :(得分:2)

您的构造函数应如下所示:

protected Cell(int address, T value)
{

}

您不需要在构造函数中指定type参数。

抽象类中构造函数的要点是强制派生类调用其中一个抽象类&#39;来自派生类定义的任何构造函数的构造函数。