gpt4 book ai didi

c# - 如何在 C# 中模拟/继承数组初始化语法?

转载 作者:行者123 更新时间:2023-11-30 20:11:24 26 4
gpt4 key购买 nike

我正在构建一个矩阵类(我知道存在一个),我正在考虑初始化。目前初始化之一是

  double[,] data;
public Matrix(double[,] data)
{
if (data.GetLength(0) == 0 || data.GetLength(1) == 0)
{
throw new ArgumentException();
}
this.data = (double[,])(data.Clone());
}

这很好,因为它可以像

一样初始化
  Matrix matrix= new Matrix(new double[,]{{1, 0  , 0  },
{1, 0.5, 0 }});

有没有办法做到更紧凑,比如

  Matrix matrix= new Matrix{{1,0}, {1,1}, {1,5}};

甚至更好

  Matrix matrix = {{1,0}, {1,1}, {1,5}};

最佳答案

好吧,不是最后一个 - 但倒数第二个至少使用集合初始值设定项可能:

  • 实现 IEnumerable (可以显式完成,如果您确实不希望正常调用它,则抛出异常)
  • 创建一个 Add(params double[] value) 方法

问题是,这会让你的矩阵变得可变。您可以创建一个MatrixBuilder类,并使用:

Matrix matrix = new MatrixBuilder{{1,0}, {1,1}, {1,5}}.Build();

当然还有其他问题 - 您需要检查“矩阵”是否在中途突然开始改变尺寸,例如

Matrix matrix = new MatrixBuilder{{1,0}, {1,1,2,2,2,2,2,2}, {1,5}}.Build();

关于c# - 如何在 C# 中模拟/继承数组初始化语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831577/

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