2012-05-08 2 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]; test [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 이 참조 유형 인 경우 문은 0 개의 참조로 초기화되는 의 10 개 요소의 배열을 만듭니다.

값 형식 및 참조 형식에 대한 자세한 내용은 형식 (C# 참조)을 참조하십시오. 의

Here is MSDN link

3

이 클래스는 실제 객체가 아닌 참조 배열을 생성합니다. 인스턴스를 직접 할당해야합니다.

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