导致错误的原因“并非所有代码路径都返回一个值”
本文关键字:返回 路径 一个 代码 错误 | 更新日期: 2023-09-27 18:07:51
public string Valid(OleDbDataReader myreader, int stval)
{
object val = myreader[stval];
if (val != DBNull.Value)
{
return val.ToString() ;
}
else
{
Convert.ToString(0);
}
}
存在错误" not all code paths return a value"请帮助
你需要阅读基本的C函数。
作为返回字符串值的函数,在任何情况下都必须返回一个值。这也包括else部分。
原因是如果执行了其他部分,则需要返回字符串值,但没有返回:
public string Valid(OleDbDataReader myreader, int stval)
{
object val = myreader[stval];
if (val != DBNull.Value)
{
return val.ToString() ;
}
else
{
return Convert.ToString(0); //forgot to write return over her
}
}
创建一个返回值的函数时,需要确保通过该函数的所有可能路径最终都返回一个值。
在您的例子中,如果myreader[stval]
等于DBNull.Value
,则不返回任何值,因为它将进入else
子句并简单地下降到函数的末尾,不返回任何值:
public string Valid(OleDbDataReader myreader, int stval)
{
object val = myreader[stval];
if (val != DBNull.Value)
{
return val.ToString() ;
}
else
{
Convert.ToString(0);
}
}
我个人的意见是这样写更好:
public string Valid (OleDbDataReader myreader, int stval) {
object val = myreader[stval];
if (val != DBNull.Value)
return val.ToString() ;
return Convert.ToString(0);
}
换句话说,通常最好在最后提供一个默认情况,以确保不会发生这种情况。每当我看到这样的代码:
if something:
return or exit
else:
do something else
,因为它不必要地复杂,并且可能导致您的问题中描述的那种问题(以及缩进地狱)。使用更简单的
要好得多(再次强调,这是我的观点,但有多年的经验支持):if something:
return or exit
do something else