标题:不明白"使用了未赋值的局部变量"
只看楼主
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
 问题点数:0 回复次数:13 
不明白"使用了未赋值的局部变量"
private string GetLastName(string fullName)
{
int flag = 0;
string lastName = "";//这里下面的 lastName 必须初始赋值编译才能通过, 为什么. 比如说现初始赋值为""

for (int i=0; i < fullName.Length; i++)
{
if (fullName[i] == ' ')
{
flag = i;
break;
}
}

for (int i = flag + 1; i < fullName.Length; i++)
{
lastName += fullName[i];
}

return lastName;
}




如上面的代码, flag 和 lastName 已在过程中被赋值了, 为什么VS.NET 2005 编辑不能通过, 那两个变量提示"使用了未赋值的局部变量".

什么原因, 谢谢解答!

[此贴子已经被作者于2006-10-6 14:48:14编辑过]

搜索更多相关主题的帖子: 赋值 变量 局部 lastName string 
2006-09-26 22:59
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
得分:0 
string實際是引用類型

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-09-27 08:41
wohemachen
Rank: 1
等 级:新手上路
威 望:2
帖 子:641
专家分:0
注 册:2006-9-21
得分:0 
因为String不是基本类型,是引用类型。

[此贴子已经被作者于2006-9-27 11:32:02编辑过]



[glow=255,red,2]桃花坞里桃花庵,桃花庵里桃花仙;桃花仙人种桃树,又摘桃花换酒钱。[/glow]
2006-09-27 11:26
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
得分:0 

还是不太明白, 是不是引用类型就要初始赋值?!


2006-10-06 09:37
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
得分:0 
请问你的 fullName 数组在哪定义的??

[此贴子已经被作者于2006-10-6 14:25:53编辑过]



一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-10-06 14:25
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
得分:0 
以下是引用mylover624在2006-10-6 14:25:29的发言:
请问你的 fullName 数组在哪定义的??

private string GetLastName(string fullName)
{
int flag = 0;//这里下面的 lastName 必须初始赋值编译才能通过, 为什么
string lastName = "";
...........


是在函数原形里.


2006-10-06 14:39
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
得分:0 
string fullName 这里你是定义的字符串型,
if (fullName[i] == ' ')而这里你又把它当作数组来用???你觉得应该怎么办呢?呵呵.

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-10-06 14:42
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
得分:0 
以下是引用mylover624在2006-10-6 14:42:32的发言:
string fullName 这里你是定义的字符串型,
if (fullName[i] == ' ')而这里你又把它当作数组来用???你觉得应该怎么办呢?呵呵.

啊?!偶被你说糊涂了, 这是c#数组的索引功能啊.


2006-10-06 14:45
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
得分:0 
在哪行提示"使用了未赋值的局部变量".
我现在在外面,没办法进行编辑

[此贴子已经被作者于2006-10-6 14:50:28编辑过]


一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-10-06 14:49
dhddna
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2005-9-22
得分:0 
以下是引用mylover624在2006-10-6 14:42:32的发言:
string fullName 这里你是定义的字符串型,
if (fullName[i] == ' ')而这里你又把它当作数组来用???你觉得应该怎么办呢?呵呵.

我用的是2003。这样是可以的,在C#里,fullName[i] 是:i是字符串fullNameI的索引,i是几就取出fullNameI的第几个字符,这点楼主没写错
至于楼主的问题:我想可能是这样的
for (int i = flag + 1; i < fullName.Length; i++)
{
lastName += fullName[i];
}
如果fullName是空的话这个循环会运行吗?我想不会,既然不会那么lastName就没有被附值,所以也就没有返回值了,自然会报错。这只是我的看法,有不对的地方请大家指教!


要赢就赢得幸福,要输就输给追求!
2006-10-06 18:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-93172-1-1.html




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

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