类型参数化抽象的 C# 构造函数 class
C# constructor for type parameterized abstract class
所以我找到了很多关于是否以及为什么可以在抽象中定义构造函数的问题的答案class。
我目前正在尝试在具有类型参数的抽象 class 中提供参数化构造函数:
public abstract class Cell<T>
{
int address;
T value;
protected Cell<T>(int address, T value)
{
}
}
但是 c# 只是拒绝它,Intellisense 完全崩溃了。
那么为什么可以在抽象 class 中有一个构造函数,但是一旦抽象 class 获得类型参数,一切都拒绝它?
您的构造函数应如下所示:
protected Cell(int address, T value)
{
}
您不需要在构造函数中指定类型参数。
抽象class中构造函数的要点是强制派生classes从派生[=17]的任何构造函数调用抽象class构造函数之一=]es定义。
从构造函数声明中删除 <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) { }
}
所以我找到了很多关于是否以及为什么可以在抽象中定义构造函数的问题的答案class。
我目前正在尝试在具有类型参数的抽象 class 中提供参数化构造函数:
public abstract class Cell<T>
{
int address;
T value;
protected Cell<T>(int address, T value)
{
}
}
但是 c# 只是拒绝它,Intellisense 完全崩溃了。 那么为什么可以在抽象 class 中有一个构造函数,但是一旦抽象 class 获得类型参数,一切都拒绝它?
您的构造函数应如下所示:
protected Cell(int address, T value)
{
}
您不需要在构造函数中指定类型参数。
抽象class中构造函数的要点是强制派生classes从派生[=17]的任何构造函数调用抽象class构造函数之一=]es定义。
从构造函数声明中删除 <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) { }
}