0
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

4 に答える 4

2

エラーは次のとおりです。

すべてのコードパスが値を返すわけではありません

どちらが正しい。ifステートメント内でのみ値を返します。

if (GRIDTest.Rows.Count != 0)

もしGRIDTest.Rows.Count==0。そうすると、値は返されません。


フェイルセーフとして(コードエラーの場合、またはifステートメントが真でない場合)、メソッドの最後の行に次を追加できます。

return new List<string>();

これにより、他に返品がない場合は、空Listが返されます。

于 2012-09-26T09:35:11.243 に答える
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
}
于 2012-09-26T09:34:09.633 に答える
0

例外が発生した場合、またはifステートメントがfalseを返した場合、returnステートメントは実行されないため、コンパイラーは文句を言います。

メソッドの最後にデフォルトのreturnステートメントを追加します。

于 2012-09-26T09:35:55.500 に答える
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;  
}
于 2012-09-26T09:36:21.810 に答える