Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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#_Asp.net_Memory - Fatal编程技术网

C# 数组是否使用了相同的内存空间?

C# 数组是否使用了相同的内存空间?,c#,asp.net,memory,C#,Asp.net,Memory,我在主程序中有一个数组,如下所示:(我正在使用C#在asp.net中编程) 对于本例,让我们想象一个10*2的数组 接下来我要做的就是将这个数组发送到另一个函数,如下所示: usedarray(example); public double[][] usedarray(double[][]examplearray) { } 我知道每个空间中的双数组只有64位浮点数,因此该数组将有一个1280位用于本例中使用的内存,但当发送到函数时,它使用的是相同的内存空间?或者它使用了一套全新的内存空间?数

我在主程序中有一个数组,如下所示:(我正在使用C#在asp.net中编程)

对于本例,让我们想象一个10*2的数组

接下来我要做的就是将这个数组发送到另一个函数,如下所示:

usedarray(example);
public double[][] usedarray(double[][]examplearray)
{

}

我知道每个空间中的双数组只有64位浮点数,因此该数组将有一个1280位用于本例中使用的内存,但当发送到函数时,它使用的是相同的内存空间?或者它使用了一套全新的内存空间?

数组是引用类型,而不是值类型。这意味着变量,
examplearray
实际上并不包含1280位的数据,它只包含一个指向实际数据的引用(有时也称为指针),该数据存储在其他地方(就本文而言,“其他地方”实际在何处并不重要)。正如您在那里所做的那样,将该变量传递给一个方法只是复制该引用(根据系统的不同,它是32位或64位),而不是底层1280位的数据。

它不知道,多亏了您的anwser,现在的问题是我如何知道这个数组使用了多少内存,我有这样的印象,因为一个double有一个64位的生命值,所以每个空间中的数组都有相同的64位bits@JUAN好的,您拥有的是一个数组数组,而不仅仅是一个数组,因此
example
指向一个包含许多其他数组引用的结构。引用的大小为32或64位。一旦您创建了那么多其他数组(您还没有这样做),那么这些引用中的每一个都将指向另一个数据结构,该数据结构包含一位头信息,然后是X*64位,其中X是该数组的大小。这就是实际数据所在的地方。@Servi是的,我没有写数组的创建,所以下一步要做的是插入一个,例如'example[N]=new double[2]”,所以我有:一个'example[N][0',example[N][1',这意味着每个数组只有64位,总共有64*N?
usedarray(example);
public double[][] usedarray(double[][]examplearray)
{

}