1

メソッドが値またはnullを返すことがわかる限り、これは非常に奇妙です...以前にnullで実行したことがあり、機能しました...ifステートメント内にこれらの2つのifステートメントを入力して以来、私は「すべてのコードパスに戻り値があるわけではありません」というエラーが発生する

    if (dt.Rows.Count != 0)
    {

        if (dt.Rows[0]["ReportID"].ToString().Length > 40)
        {

        string ReportID = dt.Rows[0]["ReportID"].ToString().Substring(0, 36);
        string ReportIDNumtwo = dt.Rows[0]["ReportID"].ToString().Substring(36, 36);
        MyGlobals1.versionDisplayTesting = ReportID;
        MyGlobals1.secondversionDisplayTesting = ReportIDNumtwo;
        return ReportID;

        }

        else if (dt.Rows[0]["ReportID"].ToString().Length < 39)
        {
            string ReportID = dt.Rows[0]["ReportID"].ToString();
            MyGlobals1.versionDisplayTesting = ReportID;
            return ReportID;
         }
    }
    else
    {
        return null;
    }
}
4

7 に答える 7

9
if (dt.Rows.Count != 0)
{
    ...

    else if (dt.Rows[0]["ReportID"].ToString().Length < 39)
    {
        string ReportID = dt.Rows[0]["ReportID"].ToString();
        MyGlobals1.versionDisplayTesting = ReportID;
        return ReportID;
     }

    // it's possible to get here without returning anything
}
else
{
    return null;
}

したがって、次のようなことを行う必要があります。

if (dt.Rows.Count != 0)
{
    ...

    else if (dt.Rows[0]["ReportID"].ToString().Length < 39)
    {
        string ReportID = dt.Rows[0]["ReportID"].ToString();
        MyGlobals1.versionDisplayTesting = ReportID;
        return ReportID;
     }
}

return null;
于 2012-06-21T19:28:42.303 に答える
4

最初の内部ifで、両方の条件がfalse。たとえば、行数が40の場合。

于 2012-06-21T19:28:41.070 に答える
2

else内側のifステートメントにがありません

于 2012-06-21T19:28:41.770 に答える
1

else最後にステートメントを削除して保持すると、return null;それは消えるはずです。内部ifステートメントに達すると何かを返しますが、最後に達すると何も返すことができません。

if (dt.Rows.Count != 0){
    if (dt.Rows[0]["ReportID"].ToString().Length > 40)
    {
        string ReportID = dt.Rows[0]["ReportID"].ToString().Substring(0, 36);
        string ReportIDNumtwo = dt.Rows[0]["ReportID"].ToString().Substring(36, 36);
        MyGlobals1.versionDisplayTesting = ReportID;
        MyGlobals1.secondversionDisplayTesting = ReportIDNumtwo;
        return ReportID;
    }
    else if (dt.Rows[0]["ReportID"].ToString().Length < 39){
        string ReportID = dt.Rows[0]["ReportID"].ToString();
        MyGlobals1.versionDisplayTesting = ReportID;
        return ReportID;
    }
}
// If gets into if statement, but does not match inner conditional statements, it will end up here, if it were an else statement, return null will not get called, and a return will not be done
return null;
于 2012-06-21T19:29:41.953 に答える
1

dt.Rows[0]["ReportID"].ToString().Length == 39いつまたはの戻り値はありませんdt.Rows[0]["ReportID"].ToString().Length == 40

于 2012-06-21T19:30:21.100 に答える
1

私はこれを行います:

string ReportID = null;

if (dt.Rows.Count != 0)
{

    if (dt.Rows[0]["ReportID"].ToString().Length > 40)
    {

    ReportID = dt.Rows[0]["ReportID"].ToString().Substring(0, 36);
    string ReportIDNumtwo = dt.Rows[0]["ReportID"].ToString().Substring(36, 36);
    MyGlobals1.versionDisplayTesting = ReportID;
    MyGlobals1.secondversionDisplayTesting = ReportIDNumtwo;

    }

    else if (dt.Rows[0]["ReportID"].ToString().Length < 39)
    {
        ReportID = dt.Rows[0]["ReportID"].ToString();
        MyGlobals1.versionDisplayTesting = ReportID;
     }
}

return ReportID;

理由:コードが少なく、リターンポイントが1つ。

于 2012-06-21T21:51:28.090 に答える
0

else後にもう1つ必要ですelse if

  if (dt.Rows.Count != 0)
    {

        if (dt.Rows[0]["ReportID"].ToString().Length > 40)
        {

        string ReportID = dt.Rows[0]["ReportID"].ToString().Substring(0, 36);
        string ReportIDNumtwo = dt.Rows[0]["ReportID"].ToString().Substring(36, 36);
        MyGlobals1.versionDisplayTesting = ReportID;
        MyGlobals1.secondversionDisplayTesting = ReportIDNumtwo;
        return ReportID;

        }

        else if (dt.Rows[0]["ReportID"].ToString().Length < 39)
        {
            string ReportID = dt.Rows[0]["ReportID"].ToString();
            MyGlobals1.versionDisplayTesting = ReportID;
            return ReportID;
        }
        else
        {
            return null /* or something */
        }
    }
    else
    {
        return null;
    }
}
于 2012-06-21T19:30:08.760 に答える