C# 数组作为字段的大小?
我试图读取类C# 数组作为字段的大小?,c#,C#,我试图读取类foo中的所有内容(以前是一个结构,但无法在结构中实例化数组大小)。但是这给了我一个错误,它不能计算条[]的大小,为什么会这样,我该如何计算呢 class foo { int foo1; bar[] bars = new bar[64]; } class bar { int bar1; int bar2; } 我怀疑这与您的字段是数组类型这一事实有关-我无法从文档中确认这一点 也许您应该通过检查field.FieldType.IsArray然后手动
foo
中的所有内容(以前是一个结构,但无法在结构中实例化数组大小)。但是这给了我一个错误,它不能计算条[]
的大小,为什么会这样,我该如何计算呢
class foo {
int foo1;
bar[] bars = new bar[64];
}
class bar {
int bar1;
int bar2;
}
我怀疑这与您的字段是数组类型这一事实有关-我无法从文档中确认这一点 也许您应该通过检查
field.FieldType.IsArray
然后手动计算大小来敏感数组类型。然而,这并不是那么简单,因为数组可以是多维的,或者是锯齿状的(这意味着分析是递归的)
另一种选择是不要试图发现数组类型的大小
请注意,您是否在泛型类型的字段上尝试了代码?如何手动检查数组大小?我制作了一个数组,这样它就可以看到它是什么类型的数组,并检查它的大小。但是如何从字段中获取数组长度呢?
foo bla = new foo();
foreach (var field in
typeof(foo).GetFields(BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.Public)) {
Console.WriteLine("({0}) {1} = {2} (size: {3})", field.FieldType, field.Name, field.GetValue(bla), Marshal.SizeOf(field.FieldType));
}