2017-02-17 81 views
0
class foo { 
    int foo1; 
    bar[] bars = new bar[64]; 
} 

class bar { 
    int bar1; 
    int bar2; 
} 

我想讀取類foo(以前是一個結構,但不能在結構中實例化數組大小)中的所有內容。但是,這給了我一個錯誤,說它不能計算出bar[]的大小,爲什麼是這樣,我將如何能夠做到這一點?SizeOf作爲一個字段的數組?

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

} 

回答

0

我懷疑它與您的字段是數組類型的事實有關 - 我無法從文檔中確認這一點。

也許你應該是通過檢查field.FieldType.IsArray,然後手動計算尺寸數組類型敏感。然而,這並不是那麼簡單,因爲數組可以是多維的,也可以是鋸齒狀的(這意味着分析將是遞歸的)。

另一種選擇是剛剛從試圖發現數組類型的大小望而卻步。

在一個相關的說明,你試試你的泛型類型的字段代碼?

+0

如何手動檢查數組大小?我已經做了它可以看到它是什麼類型的數組,並檢查類型的大小。但是,我如何從字段中獲取數組長度? – user1768788

相關問題