我刚接触可空类型。
这些可能的表示方式之间是否有实际意义上的区别?
string?[] str
string[]? str
甚至string?[]? str
似乎都是合法的
我刚接触可空类型。
这些可能的表示方式之间是否有实际意义上的区别?
string?[] str
string[]? str
甚至string?[]? str
似乎都是合法的
当我们在引用类型后面添加?
时,就允许该实例为null
。因此,我们有:
string?[]
——字符串数组,其中我们允许项为null
(但数组本身不能为null
)string[]?
——字符串数组本身可以为null
(但它的项不能为null
)string?[]?
——允许数组及其项都为null
string?[]?
。 - Tim Schmelternull
分配给项目或数组本身;因此,从技术上讲,我们有 string?[]?
。 - Dmitry BychenkoArray
和 string
都是引用类型(可以为 null),因此 string?
和 string
是等效的,[]
和 []?
是等效的(string?[]?
和 string[]
之间没有区别)。要进行区分,需要显式激活可空参考类型作为特性 #nullable enable
,因为否则这将是一种破坏性的语言更改,使得传统上等效的语句不再等效。 - AlanK
string?[]
-- 一个字符串数组,其中每个元素都可能为空,但数组本身不可以为空。string[]?
-- 每个元素都不可为空,但数组本身可以为空。string?[]?
-- 每个元素都可能为空,且数组本身也可以为空。 - canton7?
允许null
。string?[]
- 字符串数组,可以包含null
项,string[]?
数组可以为 null,但(当它不为 null 时)不能有null
项。string?[]?
可以包含null
项,也可以是null
。 - Dmitry Bychenko