创建新实例时在方法中键入转换错误

时间:2012-06-18 21:57:10

标签: c# type-conversion

我只使用整数并且想要创建一个新的Fraction实例。我收到错误,我“无法隐式转换类型。'Fractions.Fraction'到'int'”。问题与在此特定方法中创建新实例有关。我需要将方法中的所有三个值都返回给类。

我已使用调试器逐步完成代码并验证值是否正确更改。我只是无法让他们正确返回。错误发生在reduce方法的最后一行。对C#来说还是有点新鲜,并且不胜感激任何建议。

public static int Reduce(int wholeNum, int numer, int denomi)
{
    int reduceWhole = (int)wholeNum;
    while(numer > denomi)
    {
        numer -= denomi;
        reduceWhole += 1;
    }
    while (denomi % numer == 0)
    {
        int factor =  (int)denomi/numer;
        numer = 1;
        denomi = factor;
    }
    return new Fraction(reduceWhole, numer, denomi);

}

2 个答案:

答案 0 :(得分:3)

然后只需更改方法的签名即可返回Fraction而不是int

public static Fraction Reduce(int wholeNum, int numer, int denomi)
{
    // ....
    return new Fraction(reduceWhole, numer, denomi);
}

答案 1 :(得分:1)

您的方法Reduce声明返回int类型的值,但您的返回行返回的类型为Fraction。您需要将代码的第一行从int更改为Fraction

public static Fraction Reduce(int wholeNum, int numer, int denomi)
{
    int reduceWhole = (int)wholeNum;
    while(numer > denomi)
    {
        numer -= denomi;
        reduceWhole += 1;
    }
    while (denomi % numer == 0)
    {
        int factor =  (int)denomi/numer;
        numer = 1;
        denomi = factor;
    }
    return new Fraction(reduceWhole, numer, denomi);

}