| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7520 人关注过本帖
标题:string 的默认初始值问题
只看楼主 加入收藏
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
结帖率:100%
收藏
 问题点数:0 回复次数:15 
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
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
收藏
得分:0 
可能string s;没有分配内存空间吧
好像不能在这句上打断点的!


太可恶了,居然不能超过100个字符!
这区区100个又怎么能概括我平凡而又伟大的一生!
2008-10-22 11:40
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
可以打断点啊,我还监视到了值是null呢,
string s = null 就分配内存空间了?也不可能吧。


仁者乐膳,智者乐睡。我都爱~
2008-10-22 11:44
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
收藏
得分:0 
在我的IDE里,是能打断点,但是一运行断点就会移动到下一句
声明string s;只是在栈区存在引用,但是堆区没有分配内存,也就没有指向
没有指向的引用没有任何意义
能看见null估计似乎IDE为了能显示做的事情,同时也会有警告


太可恶了,居然不能超过100个字符!
这区区100个又怎么能概括我平凡而又伟大的一生!
2008-10-22 11:53
sdshismb
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-10-21
收藏
得分:0 
2008-10-22 11:54
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
那么问题出来了,为什么s初始的默认值null不能对其进行显示,但是手工赋值null就可以显示了,介个。。。是为什么呢?
我的问题是这个。。。麻烦再看遍帖子哈。栈和堆的概念我都能理解,但是似乎都不能解释这个原因吧,string s = null;就开辟堆空间了?


仁者乐膳,智者乐睡。我都爱~
2008-10-22 11:55
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
收藏
得分:0 
string s = null里面没有值,但是有内存地址啊
string s;      没有值也没有内存地址,它都不知道要显示谁怎么可能有显示呢


太可恶了,居然不能超过100个字符!
这区区100个又怎么能概括我平凡而又伟大的一生!
2008-10-22 11:59
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
收藏
得分:0 
不清楚...只知道声明的时候赋值是个好习惯...

msdn == 葵花宝典!!!
QQ:122768959
2008-10-22 12:02
小仙
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: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
7#说的对啊

比如一个按钮有个事件onclick="handleClick()"

如果你不写这个事件handleClick()肯定会报错

这个写了
handleClick()
{

}
是不一样的.一个找不到.一个找到了什么都不做

有实力才会有魅力 实力来自坚持不懈的努力
2008-10-22 14:24
快速回复:string 的默认初始值问题
数据加载中...
 
   



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

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