C# <;类型>;[,]<;名称>;用C表示法#

C# <;类型>;[,]<;名称>;用C表示法#,c#,syntax,C#,Syntax,我是一个python爱好者,最近开始学习C#,主要是通过我们的教程和我找到的代码片段。我遇到了一个函数(在一个公共类中),其签名如下: private void compute(double[,] data) 我了解那里的一切,除了double[,]数据 它似乎类似于double[]data表示法,意思是“一个doubles数组”。然而,[,]却把我甩了 有人能给我解释一下这个语法表达了什么吗?这是一个二维的双精度数组 所以你可以 double[,] myArray = new double

我是一个python爱好者,最近开始学习C#,主要是通过我们的教程和我找到的代码片段。我遇到了一个函数(在一个公共类中),其签名如下:

private void compute(double[,] data)
我了解那里的一切,除了
double[,]数据

它似乎类似于
double[]data
表示法,意思是“一个
double
s数组”。然而,
[,]
却把我甩了


有人能给我解释一下这个语法表达了什么吗?

这是一个二维的双精度数组

所以你可以

double[,] myArray = new double[4,2];


myArray[1,1]=0.3

这意味着一个二维非锯齿阵列。在本例中为
阵列

基本上,您可以使用两个坐标获取的存储系统。就像一张地图。精神上,你可以这样说:

4 5 6 4 2 3 4 3 2 4 7 2 2 3 4 2 要从中提取项目,请使用以下语法:

double[,] myArr = new double[4,23];
myArr[3,6];

哦我是否可以滥用语法,然后对一个3D双精度数组执行
double[,]
?@inspectorG4dget:这根本不是“滥用”—这只是3D数组的语法…zOMG@琼斯基特刚刚回答了我的问题。(很抱歉,这是正常人在Summer Glau high Five击掌时的感受)鉴于@JonSkeet rep,他比这里的任何人都更有可能回答问题;)@基思·尼古拉斯:我在这里已经三年了。这是他第一次回我的信。我认为我文章的主题在很大程度上起了作用(就像我说的,我是个python高手),我知道我可以用
n-1
s来表示一个n维非锯齿数组。但是对于大的
n
,这是很多逗号。是否有相关的速记,可能是10D的
double[,10]
?@inspectorG4dget不,没有。这将是非常无用的,因为在获取值时,您仍然需要键入类似于
myArray[4,2,3,5,76,2,43]
等的内容。毕竟没有人使用
double[,,,,,,,,,,,]
,那么谁在乎速记呢?