所有对象都有默认值吗?

1 c# default object

所有对象都有默认值吗?

例;

Guid guid = default(Guid);
Run Code Online (Sandbox Code Playgroud)

给; 00000000-0000-0000-0000-000000000000

DateTime dt = default(DateTime);
Run Code Online (Sandbox Code Playgroud)

给; 01/01/0001 00:00:00

对于所有对象都是如此,所有对象都会将某些值作为默认值吗?我是正确的假设是......?

Eri*_*ert 12

所有对象都有默认值吗?

绝对不.例如,字符串"abc"是一个对象,但它没有"默认值".数字12是一个对象,但它没有"默认值".

但是,所有类型都有默认值.请记住,对象是类型的实例 ; 对象存在于运行时.类型是编译时的概念.不要将类型与对象混淆; 它们与"纽约时报"字符串和今天纽约时报的实际副本不同.

可以存储在引用类型变量中的值是对对象的引用null.因此,名称"引用类型":一个变量的值的参考类型是参考(或空).

可以存储在类型变量中的是作为该类型的对象.因此,名称"值类型" - 值类型的变量的值是一个.

(我省略了讨论中的指针类型;为了我们的目的,假设所有指针类型在逻辑上与值类型IntPtr相同.)

任何引用类型的默认值都是空引用值.

任何数值类型的默认值 - int,decimal等 - 是该类型的零.(支持多个零表示的类型,如float,选择正零.)bool的默认值为false.任何可空值类型的默认值是该值类型的空值.

任何其他值类型的默认值都是递归定义为通过将类型的所有字段设置为其默认值而形成的该类型值.

明白了吗?


Lia*_*amB 5

"为引用类型返回null,为数值类型返回零."

http://msdn.microsoft.com/en-us/library/xwth0h0d%28v=VS.80%29.aspx

可能有助于解释一下.

  • @Markus:DateTime实现为*1月1日午夜1点*的'滴答'数量.(如果我没记错的话,'滴答'是100 ns.)午夜,1月1日,1AD,午夜,1月1日,1AD.明显上尉再次罢工!关闭帮助他人! (4认同)