C# 此方法中并非所有代码都返回值
这是我用来检查数据表中是否有标题匹配的方法:C# 此方法中并非所有代码都返回值,c#,.net,C#,.net,这是我用来检查数据表中是否有标题匹配的方法: public static bool checkBook(DataTable dt, String title) { try { foreach (DataRow dr in dt.Rows) { String checktitle = dr["Title"].ToString(); if (title == checktitle)
public static bool checkBook(DataTable dt, String title)
{
try
{
foreach (DataRow dr in dt.Rows)
{
String checktitle = dr["Title"].ToString();
if (title == checktitle)
return true;
else
return false;
}
catch (Exception ex)
{
//do something
return false;
}
}
但是有一个问题,我尝试使用try和catch,但为什么没有返回值?在
dt.Rows
中没有枚举任何内容的情况下,您不会从try
块返回任何内容
在try块中的foreach之外,只需添加
returnfalse
在dt.Rows
中没有枚举任何内容的情况下,您不会从try
块返回任何内容
在try块中的foreach之外,只需添加returnfalse代码>如果数据中没有行,会发生什么情况?
然后返回什么?如果数据中没有行,会发生什么情况?
然后返回什么?存在错误,因为如果datatable中没有行,则不会从代码中返回任何内容,因此需要返回false
,如下所示
为您优化代码:
public static bool checkBook(DataTable dt, String title)
{
bool returnval= false;
try
{
foreach (DataRow dr in dt.Rows)
{
String checktitle = dr["Title"].ToString();
if (title == checktitle)
{
returnval= true;
}
}
catch (Exception ex)
{
//do something
}
return returnval;
}
存在错误,因为如果datatable中没有行,则不会从代码中返回任何内容,因此需要返回false
,如下代码所示
为您优化代码:
public static bool checkBook(DataTable dt, String title)
{
bool returnval= false;
try
{
foreach (DataRow dr in dt.Rows)
{
String checktitle = dr["Title"].ToString();
if (title == checktitle)
{
returnval= true;
}
}
catch (Exception ex)
{
//do something
}
return returnval;
}
不要滥用异常,尤其是未指定的异常:改用测试。foreach是不必要的(也是您问题的根源),因为它总是在第一次出现时返回,但是如果有0行,它将永远不会返回值。我猜您希望执行以下操作return dt.rows.Cast()。Select(r=>r[“Title”].ToString())。有吗(t=>t==title);
如果你得到了想要的信息,别忘了将答案标记为已接受。不要滥用异常,尤其是未指定的异常:改用测试。foreach是不必要的(也是问题的根源),因为它将始终在第一次出现时返回,但是如果有0行,它将永远不会返回值。我猜您希望执行以下操作return dt.rows.Cast().Select(r=>r[“Title”].ToString()).Any(t=>t==Title);
如果您获得了所需的信息,请不要忘记将应答标记为ACCPEED。。