2013-03-16 133 views
1

我正在从一本书学习c#,并且必须自行编写代码作为练习的一部分。其中一件事是将double数组传递给构造函数重载方法之一,后者将进一步处理它。问题是我不知道该怎么做。C#将双数组传递给构造函数重载方法

这里谈到的完整代码(至今):代码

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace assignment01v01 
{ 

    public class Matrix 
    { 
     int row_matrix; //number of rows for matrix 
     int column_matrix; //number of colums for matrix 
     int[,] matrix; 

     public Matrix() //set matrix size to 0*0 
     { 
      matrix = new int[0, 0]; 
      Console.WriteLine("Contructor which sets matrix size to 0*0 executed.\n"); 
     } 

     public Matrix(int quadratic_size) //create quadratic matrix according to parameters passed to this constructor 
     { 
      row_matrix = column_matrix = quadratic_size; 
      matrix = new int[row_matrix, column_matrix]; 
      Console.WriteLine("Contructor which sets matrix size to quadratic size {0}*{1} executed.\n", row_matrix, column_matrix); 
     } 

     public Matrix(int row, int column) //create n*m matrix according to parameters passed to this constructor 
     { 
      row_matrix = row; 
      column_matrix = column; 
      matrix = new int[row_matrix, column_matrix]; 
      Console.WriteLine("Contructor which sets matrix size {0}*{1} executed.\n", row_matrix, column_matrix); 
     } 

     public Matrix(int [,] double_array) //create n*m matrix and fill it with data passed to this constructor 
     { 
      matrix = double_array; 
      row_matrix = matrix.GetLength(0); 
      column_matrix = matrix.GetLength(1); 
     } 

     public int countRows() 
     { 
      return row_matrix; 
     } 

     public int countColumns() 
     { 
      return column_matrix; 
     } 

     public float readElement(int row, int colummn) 
     { 
      return matrix[row, colummn]; 
     } 
    } 


    class Program 
    { 
     static void Main(string[] args) 
     { 
      Matrix mat01 = new Matrix(); 

      Matrix mat02 = new Matrix(3); 

      Matrix mat03 = new Matrix(2,3); 

      //Here comes the problem, how should I do this? 
      Matrix mat04 = new Matrix ([2,3] {{ 1, 2 }, { 3, 4 }, { 5, 6 }});   

      //int [,] test = new int [2,3] { { 1, 2, 3 }, { 4, 5, 6 } }; 

     } 
    } 
} 

部分困扰我的是标有“//这里说到这个问题,我应该怎么办呢?”。

欢迎任何建议。

回答

2

可以按如下方式创建多维数组。

new Matrix(new int[,] {{1, 2, 3,}, {1, 2, 3}}); 

int甚至是多余的,因此您可以使其更容易(或者,至少,它应该是更容易阅读:))

new Matrix(new [,] {{1, 2, 3,}, {1, 2, 3}}); 
+0

该死“你是人类”对话让我忙.... Jared说什么...... :) PS:是的!我是人! – bas 2013-03-16 16:22:59

+0

您的解决方案就像一个魅力,谢谢。 – 2013-03-16 16:39:19

3

看起来你正在努力如何用一组初始值创建一个多维数组。其语法如下

new [,] {{ 1, 2 }, { 3, 4 }, { 5, 6 }} 

因为在这种情况下您正在初始化数组,所以不需要指定大小或类型。编译器会根据提供的元素推断出它。

1

您只要有指数切换,并缺少new关键字。这应该工作:

Matrix mat04 = new Matrix (new [3,2] {{ 1, 2 }, { 3, 4 }, { 5, 6 }}); 

或者,如@JaredPar指出,就可以完全省略数组的大小,并让编译器推断它为您:

Matrix mat04 = new Matrix (new [,] {{ 1, 2 }, { 3, 4 }, { 5, 6 }}); 
+0

是的,我选择了解决方案: Matrix mat04 = new Matrix(new [,] {{1,2},{3,4},{5,6}}); – 2013-03-16 16:40:20