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

时间:2011-01-11 07:50:07

标签: c# .net winforms nullable

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

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

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

我给了我错误-Property或索引器'System.Nullable.Value'无法分配 - 它是只读的

2 个答案:

答案 0 :(得分:7)

问题是您尝试直接分配给Value属性。 Value属性被标记为只读,这就是编译器的原因告诉你那个错误。

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

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

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

答案 1 :(得分:1)

对于它的价值,你不需要这里可以为空的值。

DialogResult枚举的值为“None”,可用于指示用户未选择选项。