2012-05-08 5 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 =新しいPersonField [2];テスト[0] =新しい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個の要素の配列を作成します。 それぞれはnull参照に初期化されます。

値型と参照型の詳細については、「型(C# 参照)」を参照してください。

Here is MSDN link

3

これはクラスなので、実際のオブジェクトではなく、参照の配列を作成しています。

PersonField[] test = new PersonField[2]; 
test[0] = new PersonField(); 
test[0].FieldName = "test"; 
test[1] = new PersonField(); 
関連する問題