2012-05-08 37 views
0
[DataContract] 
public class PersonField 
{ 
    private string _fieldName; 
    private object _fieldValue; 

    public PersonField() 
    { 
    } 

    public PersonField(string FieldName, object FieldValue) 
    { 
     _fieldName = FieldName; 
     _fieldValue = FieldValue; 
    } 
    [DataMember] 
    public string FieldName 
    { 
     get { return _fieldName; } 
     set { _fieldName = value; } 
    } 
    [DataMember] 
    public object FieldValue 
    { 
     get { return _fieldValue; } 
     set { _fieldValue = value; } 
    } 
} 

我有這個類,上面是我的WCF服務中使用的類。 當我嘗試這個像NullReferenceException雖然填充數組

PersonField[] test = new PersonField[2]; 
test[0].FieldName = "test"; 

創建客戶端陣列我得到的對象引用不設置到對象的實例。不知道我在做什麼錯?

+2

可能重複[什麼是.NET一個NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –

+1

嘗試'PersonField [] test = new PersonField [2]; test [0] = new PersonField(); test [0] .FieldName =「test」;'這與序列化沒有任何關係。 –

+0

爲什麼downvote?它是一個簡單的答案,但我認爲這個問題本身沒有錯。 –

回答

0

對於這一點,你必須這樣做。呦需要初始化test[0]new關鍵字。

PersonField[] test = new PersonField[2]; 
test[0] = new PersonField(); 
test[0].FieldName = "test"; 
test[1] = new PersonField(); 
test[1].FieldName = "test2"; 

值類型和引用類型數組

考慮以下數組聲明:C#

SOMETYPE [] array4 =新SOMETYPE [10];

該聲明的結果取決於SomeType是值 類型還是引用類型。如果它是值類型,則語句結果 將創建一個包含SomeType類型的10個實例的數組。如果SomeType 是引用類型,則該語句將創建一個由10個元素組成的數組,其中每個元素初始化爲空引用。

有關值類型和引用類型的更多信息,請參見類型(C# 參考)。的

Here is MSDN link

3

由於這是一個類,因此您要創建一個引用數組,而不是實際的對象。您仍然需要分配實例(S)自己:

PersonField[] test = new PersonField[2]; 
test[0] = new PersonField(); 
test[0].FieldName = "test"; 
test[1] = new PersonField();