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 voidAdd(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