-2

我正进入(状态

你调用的对象是空的

尝试GetPersonName()在我的主要方法中调用该方法时出错。

谁能解释我为什么会发生这个错误?

这是我的代码。谢谢你

//My Class
class Program
{
    // Main Method
    static void Main(string[] args)
    {
        DMO dmo = GetPersonName();
        Console.Write(dmo.PersonArray[0].Name);
        Console.ReadKey();
    }

    private static DMO GetPersonName()
    {
        DMO dmo = new DMO();
        dmo.PersonArray[0] = new Person { Name = "XXXXXX" }; // Object reference not set to an instance of an object.
        return dmo;
    }
}


// My Data Model Object
public class DMO
{
    private Person[] _personArray;

    public Person[] PersonArray
    {
        get { return _personArray; }
        set { _personArray = value; }
    }
}

public class Person
{
    private string _name = "";

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}
4

2 回答 2

3

在你的DMO课堂上,你永远不会实例化你的_personArray.

实例化时DMO _personArraynull,所以这段代码:

dmo.PersonArray[0]

dmo.PersonArray按原样失败,null您无法访问其任何成员。

您需要实例化整个数组:

dmo.PersonArray = new Person[] { new Person { Name = "XXXXXX" } };
于 2012-06-02T19:29:11.143 回答
1

这是因为您的_personArray数组为空,它将始终返回该错误,例如,您可以做的是给它一个默认初始化,例如:

private Person[] _personArray = new Person[2];
于 2012-06-02T19:36:17.487 回答