0

そこで私は、2 つのテストの点数を入力して、テスト 1 またはテスト 2 の成績が高く、両方のテストの文字の成績が高い場合にラベルに表示するプログラムを作成しています。これは簡単なプログラムのはずですが、次の 2 つのエラーが発生します:タイプ 'オブジェクト' を '文字列' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)。letterGrade1 と letterGrade2 でこのエラーが発生します。コードは次のとおりです。

    private object TestScores(decimal Test)
    {
        string testGrade = null;

        //Perform the function
        if (Test >= 90) {
            testGrade = "A";
        } else if (Test >= 80) {
            testGrade = "B";
        } else if (Test >= 70) {
            testGrade = "C";
        } else if (Test >= 60) {
            testGrade = "D";
        } else if (Test < 60) {
            testGrade = "F";
        }


        //return the answer
        return testGrade;
    }


        }
    }

誰かが私が問題を解決するのを手伝ってくれるなら、私はそれを大いに感謝します!

問題は解決しました!みんなありがとう。

4

5 に答える 5

1

コードをこれに変更します...

 private string TestScores(decimal Test)
    {
        string testGrade = null;

        //Perform the function
        if (Test >= 90) {
            testGrade = "A";
        } else if (Test >= 80) {
            testGrade = "B";
        } else if (Test >= 70) {
            testGrade = "C";
        } else if (Test >= 60) {
            testGrade = "D";
        } else if (Test < 60) {
            testGrade = "F";
        }
        //return the answer
        return testGrade;
    }

消費者がオブジェクトをダウンキャストする必要がある場合、オブジェクトを返す理由はありません。

于 2013-10-26T20:10:29.220 に答える
1

次のコード行で、オブジェクトを文字列に割り当てようとしています。

    letterGrade1 = TestScores(test1ScoreDecimal);
    letterGrade2 = TestScores(test2ScoreDecimal);

TestScores の戻り値の型を文字列に変更する 2 つの方法で解決できます。または、結果を明示的に文字列にキャストします。

    letterGrade1 = (string)TestScores(test1ScoreDecimal);
    letterGrade2 = (string)TestScores(test2ScoreDecimal);
于 2013-10-26T20:11:14.943 に答える