猿问

在 C# 中正确使用矩阵 double[,]

我试图将此矩阵作为参数传递:


double[,] array2 = new double[4, 5] 

{

    { 45, -6, 8, -3, 48 },

    { 0, -56.733333, 3.6444444, -6.8666667, 26.8666667 },

    { 0, 0, 78.17111712, -15.2432, -133.378378},

    { 0, 0, 0, 94.190193, 319.457667}

};

但是当我尝试在另一个函数中使用它时,我遇到了超出范围的问题,我不知道我做错了什么,因为我使用的范围与我在创建 objetc double[,] 时指定的范围相同,我正在使用下一个代码:


为了传递矩阵:


Example1 a = new Example1();

a.function(array2,4,5);

使用功能:


public double[] function(double[,] nn, int n, int m)

{

    double[,] ma = new double[n, m];

    ma = nn;

    double[] x = new double[5] { 0, 0, 0, 0, 0 };

    x[n] = ma[n, m] / ma[n, n];

    return x;

}

当我尝试使用 ma[n,m] / ma[n,n] 时出现错误而且我不知道为什么发生了,因为 ma[n,m] 它恰好存在而 ma[n,n] 恰好存在至。


一只萌萌小番薯
浏览 2097回答 2
2回答

暮色呼如

如有疑问,请阅读文档数组(C# 编程指南)阵列概览数组具有以下属性:数组可以是一维的、多维的或锯齿状的。维数和每个维的长度是在创建数组实例时确定的。在实例的生命周期内无法更改这些值。数值数组元素的默认值设置为零,引用元素设置为空。锯齿状数组是数组的数组,因此其元素是引用类型并被初始化为 null。数组是零索引的:包含n元素的数组从0到索引n-1。数组元素可以是任何类型,包括数组类型。数组类型是从抽象基类型 Array 派生的引用类型。由于此类型实现了IEnumerableand&nbsp;IEnumerable<T>,您可以在 C# 中对所有数组使用 foreach 迭代。

翻阅古今

问题是当声明从 [0..3] 占用 4 个空格而 [4,#] 将占用 5 个空格时,矩阵无法识别 double [4,5] 原因。
随时随地看视频慕课网APP
我要回答