尝试设置类属性时NullReferenceException

问题描述

| 基本上,我有两个类,“ Manifest”和“ browserAction”,如下所示:
public class browserAction
{
    public string default_icon {get; set;}
    public string default_title {get; set;}
    public string default_popup {get; set;}
}


public class Manifest
{
    public browserAction browser_action {get; set;}
}
问题是,当我尝试设置清单类的实例browser'action.default_popup时,如下所示:
public void setManifest()
{
    Manifest newManifest = new Manifest();
    newManifest.browser_action.default_popup = \"popup.html\";
}
我得到一个System.NullReferenceException。我环顾四周,但似乎找不到问题所在。对于\“ Manifest \”类的其他属性(如字符串等),它可以正常工作。 如果相关的话,我的IDE是MonoDevelop 2.4,而我的框架是Mono 2.6.7。     

解决方法

        在访问该实例的属性之前,您也必须将ѭ2初始化。
newManifest.browser_action= new BrowserAction();
    ,        您正在访问仍是instance6ѭ的新创建实例
newManifest
的属性
browser_action
。 将您的示例更改为类似以下内容:
public void setManifest()
{
    Manifest newManifest = new Manifest();
    newManifest.browser_action = new BrowserAction();
    newManifest.browser_action.default_popup = \"popup.html\";
}
我假设“ 8”具有一个不带参数的公共可访问构造函数。 或一口气:
public void setManifest()
{
    Manifest newManifest = new Manifest()
        {
            browser_action = new BrowserAction()
                {
                    default_popup = \"popup.html\"
                }
        };
}
    ,        browser_action尚未初始化。将无参数构造函数添加到您的Manifest类中,如下所示:
public class Manifest
{
    public Manifest()
    {
           this.browser_action = new BrowswerAction;
    }

    public BrowserAction browser_action {get; set;}
}
    ,        我认为
Manifest.browser_action
属性返回null,因为您没有对其进行初始化。在访问其属性之前创建一个对象:
Manifest newManifest = new Manifest();
newManifest.browser_action = new BrowserAction();
newManifest.browser_action.default_popup = \"popup.html\";
    ,        将清单类别更改为
public class Manifest
{
    public BrowserAction browser_action { get; set; }
    public Manifest()
    {
        browser_action = new BrowserAction();
    }
}
问题是浏览器属性从未初始化!     ,        您已经初始化了newManifest,但是browser_action仍然为null(大概是)。 然后,您试图在null browser_action上设置default_popup并获取异常 newManifest.browser_action.default_popup = \“ popup.html \”;     ,        引用类型对象的默认值为null。您需要先在
browser_action
属性上创建
BrowserAction
实例,然后才能使用它。
// Create Manifest instance
Manifest newManifest = new Manifest();

Console.Writeline (newManifest.browser_action == null); // Print true;

// Instantiate BrowserAction on browser_action property
newManifest.browser_action = new BrowserAction();

Console.Writeline (newManifest.browser_action == null); // Print false;

// Now you can use browser_action property
newManifest.browser_action.default_popup = \"popup.html\";