我最近创建了一个通用 Matrix> 集合的包装器。据我所知,这个类(class)运行得很好。关于 T 的默认值,我遇到了一个小问题。
我创建了一个 Matrix
我尝试创建自己的结构体(值类型),但由于无法在结构体内部使用无参数构造函数,我找不到更改默认值 0 的方法。
我怀疑更改默认值是不可能的,并且在实例化矩阵后,我必须逐个单元地循环它,但我想在此处询问以防万一,然后再这样做。
最佳答案
public Matrix(int width, int height) : this(width, height, default(T)) {}
public Matrix(int width, int height, T defaultValue)
{
List<T> rows = new List<T>(height);
for (int i = 0; i < height; i++)
{
List<T> columns = new List<T>(width);
for (int j = 0; j < width; j++)
{ columns.Add(defaultValue); }
rows.Add(columns);
}
// store `rows` wherever you are storing it internally.
}
但正如 Joseph 所说,无法设置 default(T)
的计算结果。
关于c# - 是否可以更改原始数据类型的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604213/