【问题标题】:Why does the C# Programming Guide on "Using Nullable Types" list a nullified array as an example?为什么 C# Programming Guide on "Using Nullable Types" 列出了一个 nullified 数组作为示例?
【发布时间】:2014-01-25 07:59:47
【问题描述】:

据我了解,在 C# 中,数组是引用类型。所以它们可以为空。在处理数组时,使用 System.Nullable<T>'?' 运算符会很愚蠢,对吧?

错了——或者至少微软的官方 C# 编程指南似乎是这样认为的。在页面Using Nullable Types 上,他们将其列为示例:

int?[] arr = new int?[10];

他们为什么要费心将数组设为可空类型?默认情况下,它不是已经可以为空了吗?

【问题讨论】:

    标签: c# arrays nullable


    【解决方案1】:

    可以为空的不是数组本身,而是每个条目的值。

    这是对可空整数数组的引用:

    int?[] arr
    

    这是对整数数组的引用:

    int[] arr
    

    【讨论】:

      【解决方案2】:

      不是在上面的例子中使用'?'可以为空的数组.正是 int 可以为空,所以这是一个可以为空的 int 数组。而且您可能知道整数默认情况下不可为空,因为它们是值类型而不是引用类型。

      【讨论】:

        【解决方案3】:

        不,有明显的区别。您不能将空值分配给 int 数组的元素,请考虑:

        int[] numbers = new int[5];
        numbers = null; // error
        

        但是如果你定义了一个可以为空的类型的数组,你可以分配一个空值:

        int?[] arr = new int?[10];
        arr[0] = null; // ok
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-10
          相关资源
          最近更新 更多