请问从foreach循环中直接return有风险吗

qwer11121 2014-03-10 03:15:47
请问

private bool entryexist(string defaultNamingContext)
{

int i = 0;
bool result = false;
//find all nodes in treeview_ad
TreeNode[] arr = treeView_ad.Nodes.Find("", true);
foreach (TreeNode tn in arr)
{
if (tn.Text == defaultNamingContext)
{
i++;
}
}
if (i > 0)
{
result = true;
}
if (i == 0)
{
result = false;
}
return result;
}




private bool entryexist(string defaultNamingContext)
{

int i = 0;
bool result = false;
//find all nodes in treeview_ad
TreeNode[] arr = treeView_ad.Nodes.Find("", true);
foreach (TreeNode tn in arr)
{
if (tn.Text == defaultNamingContext)
{
return true;
}
}
return false;
}

这两个函数有区别吗?
...全文
883 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
练白龙 2014-03-10
  • 打赏
  • 举报
回复
第一个明显走了很多没必要的代码 第二个满足条件直接跳出循环 所以第二个比第一个效率些
md5e 2014-03-10
  • 打赏
  • 举报
回复
方法结束后他就已经释放资源了吧
qwer11121 2014-03-10
  • 打赏
  • 举报
回复
第二种写法会不会有内存泄漏或资源未释放等隐患?
md5e 2014-03-10
  • 打赏
  • 举报
回复
引用 3 楼 hbu_pig 的回复:
[quote=引用 2 楼 liuchaolin 的回复:] 明显是有区别的啊 第一种要等到循环结束 第二种找到直接就结束
那第一种加上break还有区别吗?[/quote] 肯定还是有区别的啊,break只是跳出了for,还要再进行判断一次不多余吗?
欢乐的小猪 2014-03-10
  • 打赏
  • 举报
回复
引用 2 楼 liuchaolin 的回复:
明显是有区别的啊 第一种要等到循环结束 第二种找到直接就结束
那第一种加上break还有区别吗?
md5e 2014-03-10
  • 打赏
  • 举报
回复
明显是有区别的啊 第一种要等到循环结束 第二种找到直接就结束
cheng2005 2014-03-10
  • 打赏
  • 举报
回复
就你写的例子而言,第一种写法比较烂。

110,537

社区成员

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

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

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