关于C#返回值的疑惑~

-bootblack- 2016-05-16 11:32:06
public bool IsExist(string name) //方式1
{
bool state = false;
foreach (Book b in booklist)
{
if (b.Name == name)
state = true;
else
state = false;
}
return state;
}

public bool IsExist(string name) //方式2
{
foreach (Book b in booklist)
{
if (b.Name == name)
return true;
else
return false;
}
}

请教下大神:以上两种方式有区别吗?
我在VS2012下,方式1是OK的,方式2编译器认为是没有返回值,小弟想不通,恳请大神指教~~~
...全文
132 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是飞云 2016-05-17
  • 打赏
  • 举报
回复
	foreach (Book b in booklist)
	{
		if (b.Name == name)
		{
			return true;
		}
	}
	return false;
这个才对
-bootblack- 2016-05-17
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
最简单的写法 public bool IsExist(string name) { return booklist.Any(x => x.Name == name); }
大神:以上感谢大神指教, 顺便问下: 编译器认为我的方式2没有返回值,我不是有return 吗?哪里出现问题了???
我是飞云 2016-05-17
  • 打赏
  • 举报
回复
引用 3 楼 liuchangkk1 的回复:
大神:以上感谢大神指教, 顺便问下: 编译器认为我的方式2没有返回值,我不是有return 吗?哪里出现问题了???
有可能不会进入循环,比如booklist==null的时候
foreach (Book b in booklist)
            {
                if (b.Name == name)
                {
return true;
                }
                    return false;
            }
xuzuning 2016-05-17
  • 打赏
  • 举报
回复
这有什么可郁闷的?最后加个 return false 不就行了吗? 方法 IsExist(是否存在),默认返回 false(不存在),是合理的
-bootblack- 2016-05-17
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
方式2 在 foreach 结束后,没有返回值 你仔细看看 VS 给出的错误信息就明白了 编辑器并没有执行你的代码,只是做了语法检查,并不知道你已经提前结束的代码段的执行
是啊,就像版主大神所说的,编译器此时认为我没有返回值,编译都不能通过,很郁闷~
xuzuning 2016-05-17
  • 打赏
  • 举报
回复
方式2 在 foreach 结束后,没有返回值 你仔细看看 VS 给出的错误信息就明白了 编辑器并没有执行你的代码,只是做了语法检查,并不知道你已经提前结束的代码段的执行
threenewbee 2016-05-16
  • 打赏
  • 举报
回复
有区别,一个是根据第一次判断,一个是根据最后一次判断,两个代码都是错的。 public bool IsExist(string name) //方式1 { bool state = false; foreach (Book b in booklist) { if (b.Name == name) { state = true; break; } } return state; } 这才对
threenewbee 2016-05-16
  • 打赏
  • 举报
回复
最简单的写法 public bool IsExist(string name) { return booklist.Any(x => x.Name == name); }

111,094

社区成员

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

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

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