在c#中正确使用矩阵双[,]

时间:2018-05-29 03:30:58

标签: c# matrix

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

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]碰巧存在。

2 个答案:

答案 0 :(得分:1)

如有疑问,请阅读文档

Arrays (C# Programming Guide)

  

数组概述

     
      
  • 数组具有以下属性:

  •   
  • 数组可以是单维,多维或锯齿状。

  •   
  • 创建数组实例时,将建立维度数和每个维度的长度。这些值不可能   在实例的生命周期中发生了变化。

  •   
  • 数值数组元素的默认值设置为零,引用元素设置为null。

  •   
  • 锯齿状数组是一个数组数组,因此它的元素是引用类型,并初始化为null。

  •   
  • 数组已归零:具有n元素的数组从0索引到n-1

  •   
  • 数组元素可以是任何类型,包括数组类型。

  •   
  • 数组类型是从抽象基类型Array派生的引用类型。由于此类型实现了IEnumerableIEnumerable<T>,因此   可以在C#中的所有数组上使用foreach迭代。

  •   

进一步阅读

答案 1 :(得分:0)

问题是矩阵不能识别双[4,5]原因,当声明从[0..3]取4个空格而[4,#]将占用5个空格。