方法声明中有返回类型定义,而方法中有一种执行方式没有返回值.
例如下面的方法,当var为假时方法没有返回值,就会在编译时报错"并非所有的代码路径都返回值"
public string GetSome(bool var)
{
if(var)
{
return "True";
}
}
在返回值的函数中,一定要保证无论程序走哪个分支都会正常的用return来返回一个值.
public string GetSome(bool var)
{
if(var)
{
return "true";
}
return "false";
}
再看下代码:
public static bool asdf()
{
for ( int i = 0 ; i < 30 ; i++ )
for ( int i = 0 ; i < 30 ; i++ )
{
if ( i == 29 )
return true;
else
return false;
}
}
因为你知道for一定会执行并且返回值。
if ( i == 29 )
return true;
else
return false;
}
}
因为你知道for一定会执行并且返回值。
对于编译器来说,比如你的for语句没有执行。(for ( int i = 40 ; i < 30 ; i++ ))那么这个函数是没有返回值的。
按照你的方法,最简单的改动如下。
public static bool asdf()
public static bool asdf()
{
for ( int i = 0 ; i < 30 ; i++ )
for ( int i = 0 ; i < 30 ; i++ )
{
if ( i == 29 )
return true;
else
return false;
}
return false;
}
if ( i == 29 )
return true;
else
return false;
}
return false;
}
本文探讨了在编程中如何确保所有代码路径都能正确返回值的问题,提供了具体的代码示例,并解释了为何这在编译过程中至关重要。
1637





