Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 矩阵创建_C#_Matrix_3d - Fatal编程技术网

C# 矩阵创建

C# 矩阵创建,c#,matrix,3d,C#,Matrix,3d,我为我的项目写了一个小的3D矩阵创建类。事情是这样的 class _3DMatrix { public static int[, ,] m = new int[3, 3, 3]; public _3DMatrix(int a) { for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++)

我为我的项目写了一个小的3D矩阵创建类。事情是这样的

class _3DMatrix
    {
        public static int[, ,] m = new int[3, 3, 3];

        public _3DMatrix(int a)
        {
            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    for (int z = 0; z < 3; z++)
                    {
                        m[x, y, z] = a;
                    }
                }
            }
        }
class\3du矩阵
{
公共静态int[,]m=新int[3,3,3];
公共矩阵(INTA)
{
对于(int x=0;x<3;x++)
{
对于(int y=0;y<3;y++)
{
对于(intz=0;z<3;z++)
{
m[x,y,z]=a;
}
}
}
}
现在看来,我必须创建一个NXN矩阵,将N个值作为构造函数参数。最简单的方法是什么?任何提示/代码片段都会非常有帮助。
谢谢。

您可以在构造函数中定义矩阵m的大小。只要您不更改维数,就可以:

编辑:请注意,我对矩阵使用了三种不同的大小(n1、n2、n3),但如果您从未想要不同大小的矩阵,那么没有理由不能简单地使用1个大小参数(n)

class _3DMatrix
{
    public static int[, ,] m;

    public _3DMatrix(int a, int n1, int n2, int n3)
    {
        m = new int[n1,n2,n3];
        for (int x = 0; x < n1; x++)
        {
            for (int y = 0; y < n2; y++)
            {
                for (int z = 0; z < n3; z++)
                {
                    m[x, y, z] = a;
                }
            }
        }
    }
class\3du矩阵
{
公共静态int[,]m;
公共矩阵(整数a、整数n1、整数n2、整数n3)
{
m=新的整数[n1,n2,n3];
对于(int x=0;x
用变量替换常量3:

请注意,我将数组更改为非静态数组,因为在这里使用静态数组没有意义

class _3DMatrix
{
    public int[, ,] m;

    public _3DMatrix(int size, int a)
    {
        m = new int[size, size, size];

        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                for (int z = 0; z < size; z++)
                {
                    m[x, y, z] = a;
                }
            }
        }
    }
class\3du矩阵
{
公共整数[,]m;
公共矩阵(整数大小,整数a)
{
m=新整数[大小,大小,大小];
用于(int x=0;x
您的代码(以及所有答案)创建一个NxN矩阵,使所有元素都具有相同的值
a
。如果这是您的目标,则可以。如果不是,则必须在创建函数中传递矩阵元素:

class _3DMatrix
{
    public int[, ,] m;

    public _3DMatrix(int size, int[,,] a)
    {
        m = new int[size, size, size];

        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                for (int z = 0; z < size; z++)
                {
                    m[x, y, z] = a[x,y,z];
                }
            }
        }
    }
class\3du矩阵
{
公共整数[,]m;
公共矩阵(整数大小,整数[,]a)
{
m=新整数[大小,大小,大小];
用于(int x=0;x
较短的方法:

class _3DMatrix
{
    public int[, ,] m;

    public _3DMatrix(int N, int a)
    {
        m = new int[N, N, N];
        Buffer.BlockCopy(Enumerable.Repeat(a, m.Length).ToArray(), 0, m, 0, m.Length * Marshal.SizeOf(a));
    }
}

很好。我如何实现一个合适的打印函数呢?使用循环大小?因为大小是一个局部变量。
public void Print(){for(int x=0;x
有什么想法吗?在.NET中,数组知道自己的维度。你可以调用
Rank
GetLength
从数组中获取大小。
for(int x=0;x
使用此选项可以吗?请指导。您可以问一个新问题吗?注释不适合此选项。