首次阅读“设置”(在设置之前)会引发Object reference not set to an instance of an object.
例外。
使用DefaultSettingValueAttribute设置默认值无法在实际情况下完成,因为它不是像我的int示例中的简单类型,并且不能被描述为字符串。来自the docs:
DefaultSettingValueAttribute要求默认值为 用字符串表示。
如何避免这种情况?
更多信息:
当然我可以将它包装在try-catch
块中,但这应该留给特殊情况,而这是正常的事情 - 每次使用该应用程序的用户都会遇到这种情况。而try
每次因为第一次看起来都是错误的。
那么什么是正确的解决方案?
以下是代码:
public class MySettings : ApplicationSettingsBase
{
[UserScopedSettingAttribute()]
public int MyInt
{
get { return (int)(this["MyInt"]); } // Object reference not set to an instance of an object.
set { this["MyInt"] = value; }
}
}
并且这样称呼:
MySettings s = new MySettings();
int i = s.MyInt;
答案 0 :(得分:0)
您需要为设置指定默认值。我认为应该防止记忆。
如果你不能指定默认值,请在getter中检查它是否为null,如果它是初始化为你自己的默认值。
get {
if(this["MyInt"] == null)
this["MyInt"] = 0;
return (int)(this["MyInt"]);
}