【问题标题】:Property or indexer 'System.Nullable.Value' cannot be assigned to -- it is read only无法将属性或索引器“System.Nullable.Value”分配给 - 它是只读的
【发布时间】:2023-03-20 04:05:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net winforms nullable


    【解决方案1】:

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

    相反,您应该为Nullable<T> 类型的变量赋值,就像对任何其他类型一样。例如,上面的代码将简单地变成:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多