| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1831 人关注过本帖
标题:求教老师:变量的 赋值 - “ ” 或 null
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。

2013-10-21 08:24
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用tlliqi在2013-10-21 08:24:01的发言:

打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。
感谢 tlliqi老师的回复,您的意思俺在上面也说到了,俺只是不明白下面的问题

“我搞不懂的是,什么情况下 使用 "",什么情况下 使用 null 呢???”

或者说,您什么情况下 使用 "",什么情况下使用 null 呢?

谢谢您,先!!!
2013-10-21 12:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用learnerok在2013-10-21 00:59:01的发言:

我试了一下,字符串类型 既可以 赋值为 "",也可以赋值为 null,即 string a = ""; 或 string a = null;

我搞不懂的是,什么情况下 使用 "",什么情况下 使用 null 呢???

我查了MSDN,里面好像没有对 "" 赋值做解释?

=====================

TonyDeng老师,您能帮我指点一下上面的问题吗,谢谢您先!!!

對字符串而言,""是空串,即沒有內容的空字符集,但null是連字符串都不是。null是一個空指針或空引用,意思是對象不存在。什麽時候用null呢?當你需要指出(字符串)對象不存在時,就用了。

授人以渔,不授人以鱼。
2013-10-21 22:05
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
感谢 TonyDeng老师 的指导 !!!

能举个例子吗,说明什么时候需要指出對象不存呢?

有时候看到 在方法外面将 字符串赋值 为"", 有时候又是 null, 真是不解为什么啊?

谢谢老师先!!!
2013-10-22 00:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
字符串是引用對象,它要在堆中分配空間,當對象未創建(即未分配空間)時,或未初始化時,就需要令指向它的指針或引用為null,以告訴使用者,這個對象目前不能使用。並非僅對字符串,所有對象都可以賦値為null,意思就是這個對象是不可用的,需要初始化。通常的建議,如果不是在聲明時同時給對象初始化,則把它明確賦値為null,以避免野指針,代碼要使用對象,習慣性地檢查一下它是否null再使用是個好主意。對C/C++來說,對象從內存中釋放後,也應主動給指針賦値為nullptr,防止後續代碼誤用野指針所指向的數據,C#不需要釋放,但若你決定廢棄某個對象時,順便給它的引用賦値為null,也是良好的習慣。

授人以渔,不授人以鱼。
2013-10-22 00:44
weikaijin
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-11-15
收藏
得分:0 
回复 10楼 learnerok
null为空,不分配相应的内存
""为空字符串,分配内存,是一个内容为空的字符串
2013-10-22 11:24
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用TonyDeng在2013-10-22 00:44:12的发言:

字符串是引用對象,它要在堆中分配空間,當對象未創建(即未分配空間)時,或未初始化時,就需要令指向它的指針或引用為null,以告訴使用者,這個對象目前不能使用。並非僅對字符串,所有對象都可以賦値為null,意思就是這個對象是不可用的,需要初始化。通常的建議,如果不是在聲明時同時給對象初始化,則把它明確賦値為null,以避免野指針,代碼要使用對象,習慣性地檢查一下它是否null再使用是個好主意。對C/C++來說,對象從內存中釋放後,也應主動給指針賦値為nullptr,防止後續代碼誤用野指針所指向的數據,C#不需要釋放,但若你決定廢棄某個對象時,順便給它的引用賦値為null,也是良好的習慣。

感谢 TonyDeng老师,你的回复我已经收藏,是这个问题目前我得到解答的最具体,感动啊!!!

您能给俺举个例子,说使用 "" 和 null 的不同情况吗?以便今后我运用到编写代码实践中,不胜感谢!!!
2013-10-22 11:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
13樓告訴你了啊,當需要指出對象不可用時,就賦値null。如果字符串確實沒有內容,就賦値"",這是它的真實內容,確實是沒任何字符了,當然是空串啦。""字符串,null不是字符串。

授人以渔,不授人以鱼。
2013-10-22 12:02
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用TonyDeng在2013-10-22 12:02:50的发言:

13樓告訴你了啊,當需要指出對象不可用時,就賦値null。如果字符串確實沒有內容,就賦値"",這是它的真實內容,確實是沒任何字符了,當然是空串啦。""是字符串,null不是字符串。

感谢老师的教诲!!!

恕在下笨拙!实在需要举例来加深学习啊。

比如:何时需要 “指出對象不可用”,需要赋值为null 呢?

能给俺分别 给出两个方法,说明:当这样的方法时,因 ... 所以需要将变量赋值为 "" ; 而另一个方法,因... 所以这里需要将变量赋值为null。

感谢您!!!
2013-10-22 12:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
聲明了一個字符串變量,但暫時還沒有賦予內容,或者廢除一個字符串變量,此時就給它賦値null。當字符串確實沒有字符時,亦即需要它的長度為零時,就賦値""。

授人以渔,不授人以鱼。
2013-10-22 12:31
快速回复:求教老师:变量的 赋值 - “ ” 或 null
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030756 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved