如何解决尝试设置类属性时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\";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。