public List<string> Test_IsDataLoaded()
{
try
{
if (GRIDTest.Rows.Count != 0)
{
int countvalue = GRIDTest.Rows.Count;
GRIDTest.Rows[0].WaitForControlReady();
List<string> ReleaseIDList = new List<string>();
int nCellCount = GRIDTest.Cells.Count;
for(int nCount = 0;nCount<nCellCount ;nCount++)
{
if(nCount %5==0)
ReleaseIDList.Add((GRIDTest.Cells[0].GetProperty("Value").ToString()));
}
return ReleaseIDList;
}
}
catch (Exception)
{
}
}
方法抛出错误=并非所有代码路径都返回一个值。代码有什么不对。
答案 0 :(得分:2)
您的错误是:
并非所有代码路径都返回值
哪个是对的。您只在if
语句中返回一个值:
if (GRIDTest.Rows.Count != 0)
如果GRIDTest.Rows.Count==0
怎么办?然后你不会返回一个值。
作为故障保护(如果您的代码出错,或者您的if语句不是真的),您可以将以下内容添加到方法的最后一行:
return new List<string>();
这将确保如果没有其他返回,则将返回空List
答案 1 :(得分:0)
您在方法的最后添加return
public List<string> Test_IsDataLoaded()
{
try
{
if (GRIDTest.Rows.Count != 0)
{
int countvalue = GRIDTest.Rows.Count;
GRIDTest.Rows[0].WaitForControlReady();
List<string> ReleaseIDList = new List<string>();
int nCellCount = GRIDTest.Cells.Count;
for(int nCount = 0;nCount<nCellCount ;nCount++)
{
if(nCount %5==0)
ReleaseIDList.Add((GRIDTest.Cells[0].GetProperty("Value").ToString()));
}
return ReleaseIDList;
}
}
catch (Exception)
{
}
return new List<string>() ;//<-------here
}
答案 2 :(得分:0)
编译器抱怨,因为如果发生异常或if语句返回false,则不会执行return语句。
在方法的末尾添加默认的return语句。
答案 3 :(得分:0)
抱怨上述问题背后的原因是你没有从整个方法返回值....它只从if condition
返回,但是如果它跳过if statement
,那么就没有了返回值。所以你必须确保在整个方法中返回值....
你可以这样做:
public List<string> Test_IsDataLoaded()
{
List<string> ReleaseIDList = new List<string>();
try
{
if (GRIDTest.Rows.Count != 0)
{
int countvalue = GRIDTest.Rows.Count;
GRIDTest.Rows[0].WaitForControlReady();
int nCellCount = GRIDTest.Cells.Count;
for(int nCount = 0;nCount<nCellCount ;nCount++)
{
if(nCount %5==0)
ReleaseIDList.Add((GRIDTest.Cells[0].GetProperty("Value").ToString()));
}
}
}
catch (Exception)
{
}
return ReleaseIDList;
}