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));

}