C#将双数组传递给构造函数重载方法

Posted

技术标签:

【中文标题】C#将双数组传递给构造函数重载方法【英文标题】:C# Passing double array to constructor overload method 【发布时间】:2013-03-05 07:09:49 【问题描述】:

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

        
    

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

欢迎提出任何建议。

【问题讨论】:

【参考方案1】:

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

new [,]  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);

【讨论】:

该死的“你是人类吗”对话框让我很忙.... Jared 所说的... :) PS:是的!我是人!【参考方案3】:

您只是切换了索引,并且缺少 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 );

【讨论】:

是的,我选择了解决方案:Matrix mat04 = new Matrix (new [,] 1, 2 , 3, 4 , 5, 6 );

以上是关于C#将双数组传递给构造函数重载方法的主要内容,如果未能解决你的问题,请参考以下文章

C#:将 BusinessObject 传递给“BusinessLayer”构造函数或其方法?

构造函数不将初始数组值传递给方法

将对象数组传递给构造函数[重复]

C#问题...Form2怎么获取Form1的按钮事件!..

将数组传递给构造函数会产生大小为 1 的数组? [复制]

如何在 c# 中基于构造函数方法创建数组?