gpt4 book ai didi

用于自定义矩阵类的 C# 集合初始化语法?

转载 作者:行者123 更新时间:2023-12-04 01:54:30 24 4
gpt4 key购买 nike

我正在创建一个自定义矩阵类,它只有一个二维数组来保存所有内容(我知道一维数组更快更好,但这不是这个实现的重点)事情是,我想要有一个构造函数,并且能够做类似的事情

Matrix a = new Matrix(2,2){{1,2},{3,4}};

然后一切都解决了。我遇到了“‘矩阵’不包含‘添加’的定义,也没有扩展方法‘添加’等”。但环顾四周后,我还没有找到足够可靠的信息来说明如何定义 Add() 方法以使其正常工作。这是我到目前为止的代码

public class Matrix : IEnumerable
{
/* What we know abuot matricies
* - matricies are defined by rows, cols
* - addition is element-wise
*/

public IEnumerator GetEnumerator()
{
yield return m;
}

private void Add(double a)
{
// what exactly should go here anyway?
}

private double[,] m;

public double this[int rows, int cols]
{
get => m[rows, cols];
set => m[rows, cols] = value;
}

public Matrix(int rows, int cols)
{
m = new double[rows, cols];
}
...
}

那么,无论如何我将如何执行 Add() 方法?

最佳答案

试试这段代码。您的添加方法必须是公开的。此外,为了确保代码安全,您必须添加验证器来检查 m 矩阵的大小和提供的数据是否匹配。

private int currentRow = 0;
public void Add(params double[] a)
{
for (int c = 0; c < a.Length; c++)
{
m[currentRow, c] = a[c];
}
currentRow++;
}

如果您不提供所有行,则其余行将包含具有默认值的元素。另外需要注意的是,以后可以调用该方法,当m矩阵的行都填满时会抛出异常。

关于用于自定义矩阵类的 C# 集合初始化语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51291858/

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