1

私は1冊の本からc#を学んでおり、演習の一環として自分でコードを作成する必要があります。実行することの1つは、double配列をコンストラクターオーバーロードメソッドの1つに渡し、コンストラクターオーバーロードメソッドをさらに処理することです。問題は、どうしたらいいかわからないことです。

ここに完全なコードがあります(今まで):

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 に答える