我的考试成绩计划有错误吗?

时间:2013-10-26 20:07:24

标签: c#

所以我正在制作一个你输入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;
    }


        }
    }

如果有人能帮我解决问题,我将不胜感激!

问题已经解决了!谢谢大家。

5 个答案:

答案 0 :(得分: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;
    }

如果消费者需要向下投射对象,则没有理由返回对象。

答案 1 :(得分:1)

您正尝试在这些代码行中将对象分配给字符串:

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

您可以通过两种方式解决它,或者将TestScores的返回类型更改为string。 或者将结果明确地转换为字符串。

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

答案 2 :(得分:0)

您正尝试将TestScores的结果分配给string变量,但TestScores会返回object ...

TestScores的返回类型更改为string

或如果您因某种未知原因确实需要返回TestScores(test1ScoreDecimal).ToString(),请更改为object

答案 3 :(得分:0)

TestScores的返回类型更改为string或使用:

letterGrade1 = (string)TestScores(test1ScoreDecimal);

答案 4 :(得分:-1)

要么使TestScore成为没有构造函数的静态类:

static class TestScores
{
   static string Calculate(double score){}
}

或者正确地实例化该课程:

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