在 C# 中,int 类型的类实例变量的默认值是多少?
?
例如,在下面的代码中,如果 MyNullableInt
从未显式赋值,会有什么值?
For example, in the following code, what value will MyNullableInt
have if it is never explicitly assigned?
class MyClass
{
public int? MyNullableInt;
}
(似乎答案几乎可以肯定是 null
或 0
,但它们中的哪一个?)
(It seems likely that the answer is almost certainly either null
or 0
, but which of those is it?)
int?
的默认值——以及任何使用type?"的可空类型声明 -- 是 null
.
The default value for int?
-- and for any nullable type that uses the "type?" declaration -- is null
.
为什么会这样:
int?
是 Nullable<T>类型的语法糖a>(其中 T 是 int
),一个结构体.(参考)Nullable<T>
类型具有 bool HasValue成员,当 false
时,使 Nullable
实例表现得像"一个 null
值.特别是,Nullable<T>.Equals 方法被覆盖以返回 true
当 HasValue == false
的 Nullable<T>
与实际的 null
值进行比较时.null
.bool
变量的默认值为 false
(参考).因此,默认 Nullable
实例的 HasValue
属性为 false
;这反过来又使 Nullable<T>
实例本身的行为类似于 null
.int?
is syntactic sugar for the type Nullable<T> (where T is int
), a struct. (reference)Nullable<T>
type has a bool HasValue member, which when false
, makes the Nullable<T>
instance "act like" a null
value. In particular, the Nullable<T>.Equals method is overridden to return true
when a Nullable<T>
with HasValue == false
is compared with an actual null
value.null
. bool
variable in C# is false
(reference). Therefore, the HasValue
property of a default Nullable<T>
instance is false
; which in turn makes that Nullable<T>
instance itself act like null
.这篇关于可空类型“int"的默认值是多少?(包括问号)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!