首页 新闻 会员 周边 捐助

请问c#中object o和object o=null有什么区别?

0
悬赏园豆:5 [已解决问题] 解决于 2012-07-11 11:19

请问c#中object o和object o=null有什么区别,最好能说详细点?

C#
观海云不远的主页 观海云不远 | 初学一级 | 园豆:89
提问于:2012-05-10 21:49
< >
分享
最佳答案
0

object o=null;

相当于:

object o;

o=null;

就是在定义的时候同时初始化。

一个变量定义后,初始值为默认值(比如很多类型的null),在一些语言里,定义后会自动初始化,定义后就能直接使用。

但是,在.NET中,为了提升代码质量,避免一些不必要的麻烦,要求任何变量都必须是先初始化后使用,否则,编译报错。

object o=null;

就是一步到位的操作,将代码简化(呵呵,少写了一行代码啊,虽然在程序执行上并没什么区别)。

收获园豆:5
无之无 | 大侠五级 |园豆:5095 | 2012-05-10 22:35
其他回答(4)
0

Object o; 这种写法只是分配一个引用,从内存上说在栈上分配了一块名叫o的内存。
Object o = null; 这么写则是给引用指向了一个空对象,不仅在栈上分配置了一个名叫o的内存,还在堆上分配了一块内存,里面存放的是null的值,并且o指向堆上的这块内存。

artwl | 园豆:16736 (专家六级) | 2012-05-10 22:10
-2

Object o;等待初始化或自动初始,在内存的栈里有一个叫o的变量,但没有指向堆里的哪些引用;

Object o = null;手动初始化,在内存的栈里有一个叫o的变量,但没有指向堆里的哪些引用;

Hevi | 园豆:118 (初学一级) | 2012-05-10 23:52
0

100和100块钱有什么区别?

CarsonCui | 园豆:162 (初学一级) | 2012-06-05 15:15
0

地  地  地 地 地 地 地

GRyan | 园豆:207 (菜鸟二级) | 2012-10-29 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册