1

我正在从一本书中学习 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 } };

        }
    }
}

困扰我的部分代码标有“//问题来了,我该怎么做?”。

欢迎任何建议。

4

3 回答 3

3

看起来您正在为如何创建具有一组初始值的多维数组而苦苦挣扎。其语法如下

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

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

于 2013-03-16T16:21:49.740 回答
2

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

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

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

 new Matrix(new [,] {{1, 2, 3,}, {1, 2, 3}});
于 2013-03-16T16:22:13.503 回答
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 }});
于 2013-03-16T16:22:30.380 回答