我有一个自定义Matrix
类,我想实现一个自定义对象初始值设定项,类似于double [,]可以使用但似乎无法弄清楚如何实现它。
理想情况下,我希望看起来像这样
var m1 = new Matrix
{
{ 1.0, 3.0, 5.0 },
{ 7.0, 1.0, 5.0 }
};
截至目前,我有一个带有
签名的常规构造函数public Matrix(double[,] inputArray){...}
接受像这样的电话
var m1 = new Matrix(new double[,]
{
{ 1.0, 3.0, 5.0 },
{ 7.0, 1.0, 5.0 }
});
和一个对象初始化程序,通过继承IEnumerable<double[]>
接口并实现public void Add(double[] doubleVector)
方法来接受以下使用
var m2 = new Matrix
{
new [] { 1.0, 3.0, 5.0 },
new [] { 7.0, 1.0, 5.0 }
};
当我尝试使用对象初始化器时,我想得到一个编译器错误,即没有Add
的重载,它带有X个参数,其中X是我想要创建的列数(即在我提供的例子中3)。
如何设置我的课程来接受像我提供的论点?
答案 0 :(得分:5)
使用params
关键字定义public void Add(params double[] doubleVector)
{
// code
}
方法并忽略数组中的结束元素,该元素长于矩阵宽度
0
如果数组较短,则保留默认元素(// sample
var M = new Matrix()
{
{ 1.2, 1.0 },
{ 1.2, 1.0, 3.2, 3.4}
};
)
<a href="aaa">
abcd
<div style="font-style:italic;">
efgh
</a>
ijkl
</div>