“ 并非所有的代码路径都返回值”这个问题怎么解决?

走在希望的田野上 2010-08-06 03:42:02
错误 1 “Tetris.BlockInfo.GetIdStr()”: 并非所有的代码路径都返回值 F:\C# Language\Tetris\Tetris\BlockInfo.cs 40 23 Tetris

这段的代码如下:

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
return s.ToString();
}
}
...全文
458 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongxyt2 2010-08-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
C# code

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");

}
return s.ToString(……
[/Quote]
这个讲得很好
KnowKjava 2010-08-07
  • 打赏
  • 举报
回复
没有返回值
guohelv0519 2010-08-06
  • 打赏
  • 举报
回复
写一个简单的过程:

public int GetNumber(int a)
{
if(a > 0)
return a;
}

咋看起开上面的逻辑没有任何问题,在 C 语言里这是完全正确的,但 C# 语言很严谨,它不允许含糊其辞。具体分析一下。此过程的本意为传入一个参数,如果参数值大于零则返回该参数值。但过程中只处理了参数值大于零的情况,其他情况并没有做任何处理,所以 VS 编译器认为在反面情况下也应该有一个返回值,否则就是所谓的“并非所有的代码路径都返回值”错误产生了。
Lover_baobao 2010-08-06
  • 打赏
  • 举报
回复
return s.ToString();
放到最后面
mafgm 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr()
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
}
return s.ToString();
}
fangxiaofelix 2010-08-06
  • 打赏
  • 举报
回复
楼上正解!
pigadd 2010-08-06
  • 打赏
  • 举报
回复
多说完了……
宇峰科技 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr()
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
}
return s.ToString();
}
loveSoftandhxy 2010-08-06
  • 打赏
  • 举报
回复
楼上的都是正确的建议,就是这样子。
ouc_ajax 2010-08-06
  • 打赏
  • 举报
回复
并非所有的代码路径都返回值.

只要你保证所有可能情况下,都会有值返回,就行了!
wuyq11 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr()
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
}
return s.ToString();
}
dai78 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
break;
}
return s.ToString();
}
sishui198 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
//放在这里是不能确定GetIdStr()有返回值的
}
return s.ToString();
}
行者_ 2010-08-06
  • 打赏
  • 举报
回复
当_id 为空时,这个函数没有返回值,
按照上面人的方法改就可以了
KnowKjava 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
C# code

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");

}
return s.ToString(……
[/Quote]up
q107770540 2010-08-06
  • 打赏
  • 举报
回复

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");

}
return s.ToString();//将这句提到外边
//原因:当_id没有值时,代码就不会走进foreach语句,此方法就没有retrun值
}
fly0012008 2010-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ycg_893 的回复:]
任何具有返回值的方法或函数必须具有返回值或抛错,否则就出错。
上面的代码改成:

C# code

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(……
[/Quote] up up
ycg_893 2010-08-06
  • 打赏
  • 举报
回复
任何具有返回值的方法或函数必须具有返回值或抛错,否则就出错。
上面的代码改成:

public string GetIdStr() //把似有成员变量_id转换为字符串并返回
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
//放在这里是不能确定GetIdStr()有返回值的
}
return s.ToString();
}
gohappy2008 2010-08-06
  • 打赏
  • 举报
回复
public string GetIdStr()
{
StringBuilder s = new StringBuilder(25);
foreach (bool b in _id)
{
s.Append(b ? "1" : "0");
}
return s.ToString();
}

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧