我有一个属性,我想int?在我的Settings.settings文件中键入.当我使用时,int?我得到运行时故障:
System.NullReferenceException:对象引用未设置为对象的实例..
我可以使用字符串类型作为解决方法,其中检查null工作,但我必须解析字符串并在解析不起作用时处理错误.
能够将值设置为null允许我将属性保存在设置文件中,同时明显没有设置任何值.未设置时,我使用编程的默认值:
int? configuredNumberOfLimits = Settings.Default.RequiredNumberOfLimits;
if ( configuredNumberOfLimits == null )
{
requiredNumberOfLimits = DEFAULT_REQUIRED_NUMBER_LIMITS;
}
Run Code Online (Sandbox Code Playgroud)
Jen*_*Ari 57
有一种方法可以使用可空类型(即int?)进行设置 - 它需要对设置文件进行一些手动编辑,但之后在VS环境和代码中工作正常.并且不需要额外的功能或包装.
要执行此操作,请创建具有所需名称的设置(例如RequiredNumberOfLimit)并使其成为任何类型(例如,int为方便起见).保存更改.
现在转到项目文件夹并使用文本编辑器打开"Properties\Settings.settings"文件(例如,记事本)或者您可以通过右键单击解决方案资源管理器中的"<您的项目> - >属性 - 在VS中打开它". > Settings.settings",选择"打开方式...",然后选择"XML编辑器"或"源代码(文本)编辑器".在打开的xml设置中找到您的设置(它将如下所示):
<Setting Name="RequiredNumberOfLimit" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
Run Code Online (Sandbox Code Playgroud)
将"类型"参数更改System.Int32为System.Nullable<System.Int32>.并且还清除默认值(因此默认情况下可以使用null).现在这个部分应该是这样的(请注意,<并且>用于表示类型字符串中的符号<和>符号 - 这是为了正确解析VS的xml):
<Setting Name="RequiredNumberOfLimit" Type="System.Nullable<System.Int32>" Scope="User">
<Value Profile="(Default)" />
</Setting>
Run Code Online (Sandbox Code Playgroud)
现在保存更改并重新打开项目设置 - 瞧!- 我们设置RequiredNumberOfLimit,其类型System.Nullable<System.Int32>由VS Settings Designer正确解析,并且可以int?在代码中用作普通变量.
如果您希望此设置能够返回null,则应保持默认值字段清除.否则,如果之前已将其指定为null,则此设置将返回默认值(但这就是默认值的工作原理,不是吗?:P).
| 归档时间: |
|
| 查看次数: |
4847 次 |
| 最近记录: |