| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7520 人关注过本帖
标题:string 的默认初始值问题
取消只看楼主 加入收藏
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
结帖率:100%
收藏
 问题点数:0 回复次数:6 
string 的默认初始值问题
今天偶然想到个很奇怪的问题,上VS一演,果真如此。
  string s;
  MessageBox.Show(s);
会报一个使用未赋值变量的错误。
  我们再拉一个文本框,textBox1.Text上来,也是未做任何改变的
  string s;
  MessageBox.Show(textBox1.Text);
在string s;这里打一个断点监控,然后运行程序, 可以发现,s里面检测到的值是null,可见字符串的初始值就是null
而MessageBox.Show显示的内容是一个空白对话框,监视textBox1.Text的值是"";那么文本框就是有初值的变量,初值是""
最后一个问题,改代码如下
string s = null;
MessageBox.Show(s);
这个时候运行程序,可以发现程序能够运行,显示的是空白对话框,
[bo]那么问题出来了,为什么s初始的默认值null不能对其进行显示,但是手工赋值null就可以显示了,介个。。。是为什么呢?[/bo]
搜索更多相关主题的帖子: string 
2008-10-22 11:12
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
可以打断点啊,我还监视到了值是null呢,
string s = null 就分配内存空间了?也不可能吧。


仁者乐膳,智者乐睡。我都爱~
2008-10-22 11:44
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
那么问题出来了,为什么s初始的默认值null不能对其进行显示,但是手工赋值null就可以显示了,介个。。。是为什么呢?
我的问题是这个。。。麻烦再看遍帖子哈。栈和堆的概念我都能理解,但是似乎都不能解释这个原因吧,string s = null;就开辟堆空间了?


仁者乐膳,智者乐睡。我都爱~
2008-10-22 11:55
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
[bo][un]shmilylee[/un] 在 2008-10-22 11:59 的发言:[/bo]

string s = null里面没有值,但是有内存地址啊
string s;      没有值也没有内存地址,它都不知道要显示谁怎么可能有显示呢


呃。。。这个,不好验证它到底有没地址。。目前看来是最好的理解。


仁者乐膳,智者乐睡。我都爱~
2008-10-22 12:44
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
回复 10# 师妃暄 的帖子
大家说的都很在理,呃。。你举的那个事件的例子,确实和我的情况很象,不过handleClick()
{

}这样就在内存中有了具体的地址,来存放这个内容,只是里头没有执行操作的代码。而我觉得string s = null;这步并不等于你给handleClick()写方法这步,因为不能说给一个null赋给引用变量就说明它有地址了。
我来总结下,

看来string s;监视到的null和string s =null;这两个null还不一样,那么依大家所见,string s =null;是在内存中开辟了空间?有了地址。

我个人觉得,string s = null是指s在堆中开辟了空间,不过没有具体的值。。有点糊了。


仁者乐膳,智者乐睡。我都爱~
2008-10-22 18:06
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
不晓得和C里头 int *p; p的值是一个-8什么什么的长数字有没有关系呢?


仁者乐膳,智者乐睡。我都爱~
2008-10-22 18:07
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
你没看清我的问题。。我知道没new是null拉,我现在弄懂了,也不叫弄懂了,只是知道,初始化的null和没初始化的null是有区别的。


仁者乐膳,智者乐睡。我都爱~
2008-10-22 20:28
快速回复:string 的默认初始值问题
数据加载中...
 
   



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

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