【发布时间】:2013-11-19 21:11:42
【问题描述】:
我需要从方法中返回一个结构。结构的成员之一需要是二维数组。我知道使用固定大小的缓冲区来声明结构中数组的大小以及使用
[StructLayout(LayoutKind.Explicit)]
public struct struct1
{
[FieldOffset(0)]
....
}
但这是问题所在。我不能这样做,因为我事先不知道数组的长度。数组的大小取决于用户在运行时选择的参数。
struct foo {
int x;
double[,] A = new double[N, M];
};
我不知道 N 或 M 提前。它们由用户在运行时选择。
这可能吗?如果是的话,一个人会怎么做?提前感谢您提供的任何建议或建议。
【问题讨论】:
-
有什么理由不能使用类吗?
-
这是较大代码的一部分。不想要开销。此外,结构是通过引用而不是值传递的。 (我想)。堆栈与堆问题也是如此。
-
类也是通过引用传递的。
-
如果在此处使用类而不是结构的开销将对您的系统产生重大影响,那么您的系统存在重大设计问题。 C# 旨在优化和使用类......使用语言,这不是 C++。不要预先优化
-
部分问题还在于结构的成员都是数据类型。没有方法。最后,我也不确定如何使用类来做到这一点。此外,该结构在处理的每组数据上都会完全更新。