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

拉克斯莫

我正在创建一个仅具有一个2D数组来容纳所有内容的自定义矩阵类(我知道一个1D数组会更快更好,但这不是此实现的目的),我想拥有一个构造函数,并且能够执行类似的操作

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

并全部解决。我遇到了“'Matrix'不包含'Add'的定义,也没有扩展方法'Add'等。” 但是环顾四周之后,我仍然无法找到足够稳健的信息,以了解如何定义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()方法?

磁控管

试试这个代码。您的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矩阵中的所有行均已填充时,它将引发异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

现有集合的C#集合初始化语法

初始化自定义类的数组

如何初始化自定义类对象的数组?

如何在 C++ 中支撑自定义类的初始化向量?

关于自定义类的初始化程序的 C++ 混淆

如何通过聚合初始化来初始化自定义 Array 类?

C# 自定义控件的属性在 InitializeComponent() 调用后未初始化?

C ++值初始化自定义容器的项

用于实例化初始化集合的紧凑语法

自定义绑定初始化

初始化结构化文本语法中的自定义类型数组

在C ++中的自定义类的构造函数中初始化没有参数的静态const类成员

初始化自定义类型不适用于var,但适用于:=

初始化XAML中没有数组的自定义集合

HttpWebRequest集合初始化C#

C#初始化语法

C#中的自定义app.config生成配置系统无法初始化异常

创建用于声明和初始化对象的自定义注释

用于sysv初始化到systemd转换的自定义脚本

枚举不适用于自定义初始化程序

如何使用自定义比较器初始化 std::set 类数据成员

初始化后如何更新自定义类中的 UILabel 文本 (Swift 3)

故事板初始化UIView而不是我的自定义类

如何使用JavaScript初始化自定义html类

Kotlin-初始化自定义类对象的数组

我的TableViewCell自定义类中的IbOutlet从未被初始化

如何从类本身内部初始化自定义视图控制器?

在类构造函数中初始化自定义struct对象的正确方法

如何在Swift中的自定义类中初始化Timer?