-1

CSファイルでコンパイルエラーが発生します。ユーザー資格情報のJSONオブジェクトを作成するメソッドがあります。

public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
        {

            StringBuilder sbLoginJson = new StringBuilder();
            if (blIsAuthenticated)
            {
                sbLoginJson.Append("{LoginSuccess:1");
            }
            else
            {
                sbLoginJson.Append("{LoginSuccess:0");
            }

            if (strErrorType != string.Empty)
            {
                if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankToken")
                {
                    sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
                    sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
                    sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
                    sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");

                }


                if (strErrorType.TrimEnd(new char[] { ',' }) == "Password" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankPassword")
                {
                    sbLoginJson.Append(",txtPassword:\"Error\"");

                }

                if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankUserName")
                {
                    {
                        sbLoginJson.Append(",UserName:\"Error\"");

                    }
                    string strLoadErrorControlMessage = LoadErrorControl(strErrorType, string.Empty);

                    if (strLoadErrorControlMessage != string.Empty)
                    {
                        PageTestApplicationLogin objPageTestApplicationLogin = new PageTestApplicationLogin(objClientConfiguration);
                        sbLoginJson.Append(",ErrorMessage:'" + objPageTestApplicationLogin.GetTestApplicationLoginErrorHtml("", strLoadErrorControlMessage).Replace("'", "\"") + "'");

                    }

                }
                sbLoginJson.Append("}");

                var LoginJson = sbLoginJson.ToString();
                return LoginJson;

            }
        }

returnステートメントを別の場所に配置する必要があります。これがこのエラーの原因だと思いますか?前もって感謝します

4

6 に答える 6

3

テストしif (strErrorType != string.Empty)ます。しかし、条件がである場合はfalseどうでしょうか?この場合、メソッドは何を返しますか?何もない。

これがコンパイルエラーの原因です。たとえそれがであっても、あなたは何かを返さなければなりませんnull

または、例外を発生させることもできます。たとえば、次を追加できます。

else {
    throw new ArgumentException("strErrorType", "strErrorType cannot be empty");
}

単にコンパイルの問題を解決することをさらに進めて、あなたの方法は何をすることになっていますか?strErrorType変数の空をテストします。それは禁止されるべきですか?はいの場合、例外をスローします。いいえの場合、適切な値を返します(nullおそらく)

于 2012-08-23T09:08:05.037 に答える
1

これが当てはまらない場合、メソッドからの戻りはありません。

if (strErrorType != string.Empty)

それで、最後に何かをすることを忘れないでください、おそらく例外を投げるか、何かを返しますか?

于 2012-08-23T09:08:20.223 に答える
0

コードが2番目のステートメントを入力しない場合if、returnステートメントにヒットすることはないため、エラーが発生しているのは正しいです。

私はこれを行います。

public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
        {

            StringBuilder sbLoginJson = new StringBuilder();
            if (blIsAuthenticated)
            {
                sbLoginJson.Append("{LoginSuccess:1");
            }
            else
            {
                sbLoginJson.Append("{LoginSuccess:0");
            }

            if (strErrorType != string.Empty)
            {
               //All your error code here

            }


            var LoginJson = sbLoginJson.ToString();
            return LoginJson;
        }

IFステートメントの外側の最後の2行の配置に注意してください

于 2012-08-23T09:07:52.617 に答える
0

メソッドは、何らかの条件が満たされた場合にのみ何かを返します(if (strErrorType != string.Empty))。その条件が満たされない場合も、何かを返す必要があります。つまり、メソッドに戻り型がある場合は、どのような場合でも何かを返す必要があります。例外がスローされない限り...

于 2012-08-23T09:09:05.753 に答える
0

public string CreateLoginjson(string strErrorType、bool blIsAuthenticated){

        StringBuilder sbLoginJson = new StringBuilder();
        if (blIsAuthenticated)
        {
            sbLoginJson.Append("{LoginSuccess:1");
        }
        else
        {
            sbLoginJson.Append("{LoginSuccess:0");
        }

        if (strErrorType != string.Empty)
        {
            if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankToken")
            {
                sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
                sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
                sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
                sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");

            }


            if (strErrorType.TrimEnd(new char[] { ',' }) == "Password" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankPassword")
            {
                sbLoginJson.Append(",txtPassword:\"Error\"");

            }

            if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName" || strErrorType.TrimEnd(new char[] { ',' }) == "BlankUserName")
            {
                {
                    sbLoginJson.Append(",UserName:\"Error\"");

                }
                string strLoadErrorControlMessage = LoadErrorControl(strErrorType, string.Empty);

                if (strLoadErrorControlMessage != string.Empty)
                {
                    PageTestApplicationLogin objPageTestApplicationLogin = new PageTestApplicationLogin(objClientConfiguration);
                    sbLoginJson.Append(",ErrorMessage:'" + objPageTestApplicationLogin.GetTestApplicationLoginErrorHtml("", strLoadErrorControlMessage).Replace("'", "\"") + "'");

                }

            }
            sbLoginJson.Append("}");

            var LoginJson = sbLoginJson.ToString();
            return LoginJson;

        }

return ""; // need it
        }
于 2012-08-23T09:09:57.103 に答える
0

あなたの問題を解決するすべての答えに加えて、私はちょっと役立つ情報を追加したかっただけです。

チェックする代わりに、ある時点でstrErrorType!= nullをstrErrorType != string.Empty強く検討String.IsNullOrEmpty(strErrorType)するか、少なくともチェックする必要があります。

理由は、strErrorTypenullの場合、現在のテストに合格し、null文字列でメソッドを呼び出そうとするため、例外がスローされるためです。

于 2012-08-23T09:54:49.110 に答える