【问题标题】:Why can't I assign null to an Object in C#?为什么我不能将 null 分配给 C# 中的对象?
【发布时间】:2015-01-22 20:12:08
【问题描述】:

我正在尝试使用 WinForms 之间的事件在 C# 中编写代码。我想使用 RadioButton 更改 1. 表单和 2. 表单的 RichTextBox 中的颜色文本(RadioButtons 在 2. 表单上),但是当我声明变量时:Color valgtFarge = null; 我收到此错误消息:@987654322 @。我究竟做错了什么? 功能:

private void rtf2_TextChanged(object sender, EventArgs e)
{
    Color colorChoice = null;

    if (rbtnBlack.Checked)
        colorChoice = Color.Black;

    //same here for the others RadioButtons

    if (myEventHandler != null && rtf2.Text.Length != 0)
    {
        myEventHandler(this, new Form1EventArgs(rtf2.Text.Substring(rtf2.Text.Length - 1),
            colorChoice));
    }
}

【问题讨论】:

    标签: c# events object radio-button


    【解决方案1】:

    Color 是一个结构,而不是一个类。结构不能是null。如果你想要一个可以为空的结构,你可以使用Nullable<Color>(或其简写语法Color?)来代替你的类型。

    阅读材料:Classes and Structs

    【讨论】:

      【解决方案2】:

      因为Colorstruct,并且结构不能为null。您可以使用Nullable<T> 使其可以为空:

      Nullable<Color> colorChoice = null;
      // or shorter
      Color? colorChoice = null;
      

      然后要获取Nullable 对象的值,您可以使用Value 属性或GetValueOrDefault 方法(如果您不知道它是否为null,您应该更喜欢这个.因为Value如果为null会抛出异常。供进一步参考:

      【讨论】:

        【解决方案3】:

        您可以用问号将其定义为可为空:

        Color? color = null;
        

        【讨论】:

          【解决方案4】:

          您也可以使用Color.Empty;,它类似于null,但更安全。

          Color color = Color.Empty;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-13
            • 1970-01-01
            • 2018-02-02
            • 2017-07-20
            • 2012-11-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多