你调用的对象是空的

时间:2012-06-02 19:27:57

标签: c#

我正在

  

对象引用未设置为对象的实例

尝试在main方法中调用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; }
    }
}

2 个答案:

答案 0 :(得分:3)

DMO课程中,您永远不会实例化_personArray

实例化DMO _personArraynull时,此代码为:

dmo.PersonArray[0]

失败,因为dmo.PersonArraynull,您无法访问其任何成员。

您需要实例化整个数组:

dmo.PersonArray = new Person[] { new Person { Name = "XXXXXX" } };

答案 1 :(得分:1)

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

private Person[] _personArray = new Person[2];