c# - 无法将属性或索引器 'System.Nullable.Value' 分配给 -- 它是只读的

标签 c# .net winforms nullable

我正在开发一个 winform 应用程序。基于一些值(比如 x),我想向用户显示一个警报,一个计时器更新了影响 x 的其他值(y),并检查 x 的值并向用户显示警报。 警报显示带有是/否选项的消息框,如果用户单击是,则进行一些处理。

如果用户长时间(比如 10 分钟)没有响应警报,可能会显示多条警报消息,我想防止我创建一个可为 null 的 DialogResult 变量,这样我就可以检查用户是否选择了任何选项或不是。现在的问题是它不允许给我设置那个变量的值

taskAlert.Value=MessageBox.Show(kMessage, appErrorTitle, MessageBoxButtons.YesNo);

我报错 - 无法将属性或索引器“System.Nullable.Value”分配给 -- 它是只读的

最佳答案

问题是您试图直接分配给 Value属性(property)。 Value属性被标记为只读,这就是编译器向您显示该错误的原因。

相反,您应该为 Nullable<T> 类型的变量赋值与您使用任何其他类型的方式完全相同。例如,上面的代码将简单地变成:

taskAlert = MessageBox.Show(kMessage, appErrorTitle, MessageBoxButtons.YesNo);

唯一改变的是访问值。您首先需要检查 HasValue property ,如果它返回 True,那么您将使用 Value property 检索该值.如果HasValue属性返回False,则对象的值未定义。

关于c# - 无法将属性或索引器 'System.Nullable.Value' 分配给 -- 它是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655336/

相关文章:

C# 文档 - 用户定义的标签

c# - 为什么System.Timer不改变类成员变量?

c# - 匿名类型 VS 局部变量,什么时候应该使用?

winforms - 什么会导致窗体无法自行关闭?

c# - 在 BindingList 中定位对象

c# - 如何只隐藏关闭(x)按钮?

c# - List<T>().添加问题C#

c# - 在 C# 中路由 API 调用返回 NotFound

c# - Linq All 与 Foreach

c# - ILookup 接口(interface)与 IDictionary