填充数组时出现NullReferenceException

时间:2012-05-08 23:35:24

标签: c# nullreferenceexception

[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服务中使用。 当我尝试在客户端创建数组时,就像

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

我将Object引用未设置为对象的实例。不确定我做错了什么?

2 个答案:

答案 0 :(得分:3)

由于这是一个类,因此您要创建一个引用数组,而不是实际的对象。您仍然需要自己分配实例:

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

答案 1 :(得分: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 = new SomeType [10];

     

此语句的结果取决于SomeType是否为值   类型或引用类型。如果是值类型,则会生成语句   在创建一个包含SomeType类型的10个实例的数组中。如果SomeType   是一个引用类型,该语句创建一个包含10个元素的数组,   每个都初始化为空引用。

     

有关值类型和引用类型的更多信息,请参阅类型(C#   参考)。

Here is MSDN link