.net 如何检查阵列<;对象,N>;大小,N是一个自然数?

.net 如何检查阵列<;对象,N>;大小,N是一个自然数?,.net,arrays,c++-cli,.net,Arrays,C++ Cli,我的问题很简单。我怎样才能知道声明为…的数组的大小 array<ObjectType^, 3> < >我如何知道不同维度的大小?< Stord>假设使用C++ STD::数组和Net数组< > /P> 这不是std::array的工作方式。这不是一个3D数组(基于您给出的代码)。它实际上是一个一维数组 因此,您的代码最终会看起来像这样(在伪代码中): std::array\u var; sizeof(array_var[i])*sizeof(int); 这应该行得通。至于每个维

我的问题很简单。我怎样才能知道声明为…的数组的大小

array<ObjectType^, 3>

< >我如何知道不同维度的大小?

< Stord>假设使用C++ STD::数组和Net数组< <强> > /P> 这不是std::array的工作方式。这不是一个3D数组(基于您给出的代码)。它实际上是一个一维数组

因此,您的代码最终会看起来像这样(在伪代码中):

std::array\u var;
sizeof(array_var[i])*sizeof(int);
这应该行得通。至于每个维度。好吧,你可以做到

std::array<std::array<std::array<int, 3>, 3>, 3> test;

sizeof(test[i][0][0]) * sizeof(int);
sizeof(test[0][j][0]) * sizeof(int);
sizeof(test[0][0][k]) * sizeof(int);
std::阵列测试;
sizeof(test[i][0][0])*sizeof(int);
sizeof(test[0][j][0])*sizeof(int);
sizeof(test[0][0][k])*sizeof(int);
我不确定这是否是最有效的方法(相信我,不是),我很确定更有经验的程序员能够总结出更好的方法。但是给你


顺便说一下,如果这没有回答你的问题,我很抱歉。我不太明白,但我还是尝试了一下。

看起来您正在使用c++/cli中的托管阵列(尽管在撰写本文时,您还没有时间确认这一点)

假设您使用的是
cli::array
实例,从中可以看出它继承自
System::array
,并且该类的所有方法都适用。如果您阅读该类,您会发现有一个
Array::GetLength(Int32)
方法可以让您获得给定维度的大小(请参阅该方法的文档)

比如说,

array<ObjectType^, 3>^ array_var = gcnew array<ObjectType^, 3>(3, 4, 5);

将返回
5
(因为尺寸通常从0开始编号)。您还可以使用
array\u var->Rank
获取数组的维度数。

@Rook那么这就是.net他所说的?我想,由于^,顺便说一句,我的不好,我忘了修复我的帖子。现在还不清楚OP在说什么,但最好等到他们澄清后再回答;-)@真的,我真的很抱歉!!我是新来的:)嗨,格雷厄姆。我不确定它是.NET数组还是C++数组,因为我的VisualStudio在显示类时必须有一些问题(它的内部链接器不告诉我对象的原生类是什么)。任何查找类的技巧对我都有效(将鼠标放在对象上,转到定义…)。这就是我不得不问这个问题而不是咨询API的原因。太好了!这成功了!而且排名法对我也很有用!
std::array<std::array<std::array<int, 3>, 3>, 3> test;

sizeof(test[i][0][0]) * sizeof(int);
sizeof(test[0][j][0]) * sizeof(int);
sizeof(test[0][0][k]) * sizeof(int);
array<ObjectType^, 3>^ array_var = gcnew array<ObjectType^, 3>(3, 4, 5);
array_var->GetLength(2)