C# 如何为矩阵类实现干净的自定义对象初始值设定项

C# 如何为矩阵类实现干净的自定义对象初始值设定项,c#,object-initializers,collection-initializer,C#,Object Initializers,Collection Initializer,我有一个定制的Matrix类,我想实现一个定制的对象初始值设定项,类似于double[,]可以使用的东西,但似乎不知道如何实现它 理想情况下,我希望它看起来像这样 var m1 = new Matrix { { 1.0, 3.0, 5.0 }, { 7.0, 1.0, 5.0 } }; var m1 = new Matrix(new double[,] { { 1.0, 3.

我有一个定制的
Matrix
类,我想实现一个定制的对象初始值设定项,类似于double[,]可以使用的东西,但似乎不知道如何实现它

理想情况下,我希望它看起来像这样

var m1 = new Matrix
        {
            { 1.0, 3.0, 5.0 },
            { 7.0, 1.0, 5.0 }
        };
var m1 = new Matrix(new double[,]
        {
            { 1.0, 3.0, 5.0 },
            { 7.0, 1.0, 5.0 }
        });
到目前为止,我有一个签名为的常规构造函数

public Matrix(double[,] inputArray){...}
接受这样的电话

var m1 = new Matrix
        {
            { 1.0, 3.0, 5.0 },
            { 7.0, 1.0, 5.0 }
        };
var m1 = new Matrix(new double[,]
        {
            { 1.0, 3.0, 5.0 },
            { 7.0, 1.0, 5.0 }
        });
以及一个对象初始化器,它通过继承
IEnumerable
接口并实现一个public void
Add(double[]doubleVector)
方法接受以下使用

var m2 = new Matrix
        {
            new [] { 1.0, 3.0, 5.0 },                
            new [] { 7.0, 1.0, 5.0 }
        };
当我尝试使用object Initializer时,我希望得到一个编译器错误,即没有为
Add
重载,该重载接受X个参数,其中X是我尝试创建的列数(即,在我提供的示例3中)


如何设置类以接受我提供的参数?

使用
params
关键字定义
Add
方法并忽略数组中的结束元素,该元素长于矩阵宽度

public void Add(params double[] doubleVector)
{
   // code
}
如果数组较短,则保留默认元素(
0


今天我学到了一些东西。谢谢你的帮助!该类不需要实现IEnumerable才能使用它吗?但矩阵的长度和长度应该相等width@M.kazemAkhgary在C#中,除了运行时检查之外,您无法保证这一点anyway@DerekVanCuyk我在最初的问题中说我已经继承了IEnumerable