Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可空数组表示法_C#_Arrays_Nullable Reference Types - Fatal编程技术网

C# 可空数组表示法

C# 可空数组表示法,c#,arrays,nullable-reference-types,C#,Arrays,Nullable Reference Types,我对nullable一无所知 可能的符号之间是否存在有意义的差异? string?[]str string[]?str 甚至string?[]?str似乎都是有效的当我们在允许实例为null之后放置?。所以我们有 string?[]-允许项为null的字符串数组(但数组本身不能为null) string[]?-字符串数组,可以是null本身(但不能有null项) string?[]?-数组及其项都允许为null string?[]——字符串数组,其中每个元素可以为空,但数组本身可能不为空字符串

我对nullable一无所知

可能的符号之间是否存在有意义的差异?
string?[]str
string[]?str

甚至
string?[]?str
似乎都是有效的

当我们在允许实例为
null之后放置
。所以我们有

  • string?[]
    -允许项为
    null
    的字符串数组(但数组本身不能为
    null
  • string[]?
    -字符串数组,可以是
    null
    本身(但不能有
    null
    项)
  • string?[]?
    -数组及其项都允许为
    null

string?[]
——字符串数组,其中每个元素可以为空,但数组本身可能不为空<代码>字符串[]?
——每个元素不能为空,但数组本身可以为空
string?[]?
——每个元素都可以为空,数组本身也可以为空
允许
null
string?[]
-可以包含
null
项的字符串数组,
string[]?
可以为null,但(当它不是null时)不能包含
null
项的数组
string?[]?
可以有
null
项,也可以是
null
它本身在C#8之前,它总是
string?[]?
@Tim Schmelter:是的,在C#8之前,我们总是可以将
null
分配给项或数组本身;所以,从技术上讲,我们有
string?[]?
很好的答案。尽管如此,一些困惑可能仍然存在,我希望这不会增加它。。。
Array
string
都是引用类型(可以为空),因此
string?
string
是等价的,而
[]
[].[].
在“香草”C中是等价的(而且无论版本如何,
string?[].[].
string[]
之间没有区别)。为了进行区分,作为一项功能的可空引用类型必须被显式激活
#nullable enable
,因为这是对语言的一种突破性改变,使得这种传统上等价的语句变得不等价。