我正在构建一个矩阵类(我知道存在一个),我正在考虑初始化。目前初始化之一是
double[,] data;
public Matrix(double[,] data)
{
if (data.GetLength(0) == 0 || data.GetLength(1) == 0)
{
throw new ArgumentException();
}
this.data = (double[,])(data.Clone());
}
这很好,因为它可以像
一样初始化 Matrix matrix= new Matrix(new double[,]{{1, 0 , 0 },
{1, 0.5, 0 }});
有没有办法做到更紧凑,比如
Matrix matrix= new Matrix{{1,0}, {1,1}, {1,5}};
甚至更好
Matrix matrix = {{1,0}, {1,1}, {1,5}};
?
最佳答案
好吧,不是最后一个 - 但倒数第二个至少使用集合初始值设定项可能:
- 实现
IEnumerable
(可以显式完成,如果您确实不希望正常调用它,则抛出异常) - 创建一个
Add(params double[] value)
方法
问题是,这会让你的矩阵变得可变。您可以创建一个MatrixBuilder类,并使用:
Matrix matrix = new MatrixBuilder{{1,0}, {1,1}, {1,5}}.Build();
当然还有其他问题 - 您需要检查“矩阵”是否在中途突然开始改变尺寸,例如
Matrix matrix = new MatrixBuilder{{1,0}, {1,1,2,2,2,2,2,2}, {1,5}}.Build();
关于c# - 如何在 C# 中模拟/继承数组初始化语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831577/