gpt4 book ai didi

c# - 如何为 Matrix 类实现干净的自定义对象初始值设定项

转载 作者:太空狗 更新时间:2023-10-29 23:13:41 26 4
gpt4 key购买 nike

我有一个自定义 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[]> 来接受以下使用接口(interface)和实现 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 中)。

如何设置我的类(class)以接受我提供的论点?

最佳答案

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

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}
};

关于c# - 如何为 Matrix 类实现干净的自定义对象初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com