方法不返回字符串值c#<list> </list>

时间:2012-09-26 09:32:51

标签: c# list

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)
    {
    }
}

方法抛出错误=并非所有代码路径都返回一个值。代码有什么不对。

4 个答案:

答案 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;  
}