搜索
编程论坛
→
.NET专区
→
『 C# 论坛 』
→ 初学者,一个简单的问题,可是没搞明白
标题:
初学者,一个简单的问题,可是没搞明白
只看楼主
fangpopo520
等 级:
新手上路
帖 子:3
专家分:0
注 册:2010-11-18
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:8
初学者,一个简单的问题,可是没搞明白
string name;
int tem = 10;
if (tem == 10)
{
name = "Neusoft";
}
Console.WriteLine(name);
为什么name没被赋值呢?
2010-12-23 19:54
liubaoen
等 级:
论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
第
2
楼
得分:4
不是没有被赋值,只是没有被初始化,在声明的同时赋给它一个初始值就可以了。
string name = "";
int tem = 10;
if (tem == 10)
{
name = "Neusoft";
}
Console.WriteLine(name);
按照以上修改就可以了。
2010-12-23 20:13
fangpopo520
等 级:
新手上路
帖 子:3
专家分:0
注 册:2010-11-18
第
3
楼
得分:0
呵呵,确实
可是这样却也可以的
string name;
name = "Neusoft";
Console.WriteLine(name);
那么想
string name;
int tem = 10;
if (tem == 10)
{
name = "Neusoft";
}
Console.WriteLine(name);
又为什么会错了
2010-12-23 20:48
zhoufeng1988
来 自:北京
等 级:
贵宾
威 望:
27
帖 子:1432
专家分:6329
注 册:2009-5-31
第
4
楼
得分:4
这个在C/C++是允许,但在.net里面,使用未初始化的变量编译器就会报错。
所以,在.net里,务必要对变量进行初始化,哪怕是使用null。
2010-12-23 21:43
c1_wangyf
等 级:
小飞侠
威 望:
7
帖 子:665
专家分:2832
注 册:2010-5-24
第
5
楼
得分:4
回复 3楼 fangpopo520
这是C#编译系统的默认,只定义不赋初值编译通不过?!
2010-12-23 21:46
冰镇柠檬汁儿
来 自:北京
等 级:
版主
威 望:
120
帖 子:8074
专家分:6657
注 册:2005-11-7
第
6
楼
得分:4
4楼的解释并不完全正确
原因是这样的,报错的语句是Console.WriteLine(name);,报的错误是“使用了未赋值的局部变量”,因为程序在编译的时候,并不知道if语句是否一定能进入,所以name在编译器看来就有未赋值的情况,而string类型默认值是null,在Console.WriteLine的时候,null是无法使用的,所以出错。
代码我稍微修改了一下
static void Main(string[] args)
{
string name;
int tem = 10;
if (tem == 10)
{
name = "Neusoft";
}
else
{
name = "";
}
Console.WriteLine(name);
}
这样,同样没有赋初值,但就不会有问题了。
本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-12-23 23:40
zhoufeng1988
来 自:北京
等 级:
贵宾
威 望:
27
帖 子:1432
专家分:6329
注 册:2009-5-31
第
7
楼
得分:0
谢谢汁儿~原来女孩也睡这么晚啊,呵呵。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
受教了。只是一般写程序的时候,都会给一个初始值。
但有一点,如果这里改成int,也一样会出错,也是说没有初始值。感觉编译器并没有给
局部变量做初始化。如果string类型的初始值是null的话,就能编译通过。因为把一个字
符串复制给一个字符串变量,只是把传递引用而已。
2010-12-24 00:03
冰镇柠檬汁儿
来 自:北京
等 级:
版主
威 望:
120
帖 子:8074
专家分:6657
注 册:2005-11-7
第
8
楼
得分:0
呵呵,看来是我弄错了点东西,抱歉,一个变量定义了,没有赋值,那么这个变量就没有内存地址,也就是说在内存中是不存在的,一个不存在的东西编译器会认为出错,而null实际上是内存的起始位置,也是有地址的。
本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-12-24 00:26
wangnannan
等 级:
贵宾
威 望:
87
帖 子:2545
专家分:9359
注 册:2007-11-3
第
9
楼
得分:4
Neusoft? LZ是东软信息学院的?
出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-12-24 08:28
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-329732-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.107937 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved