C# 创建新实例时方法中的类型转换错误

C# 创建新实例时方法中的类型转换错误,c#,type-conversion,C#,Type Conversion,我只处理整数,希望创建一个新的分数实例。我收到一个错误,即我“无法隐式地将类型'fracts.fracts'转换为'int'”。这个问题与在这个特定方法中创建新实例有关。我需要将方法中的所有三个值返回给类 我已使用调试器逐步检查了代码,并验证了值是否正确更改。我只是无法让他们正确返回。误差在reduce方法的最后一行。对C#还是有点陌生,如果有任何建议,我将不胜感激 public static int Reduce(int wholeNum, int numer, int denomi) {

我只处理整数,希望创建一个新的分数实例。我收到一个错误,即我“无法隐式地将类型'fracts.fracts'转换为'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);

}

然后只需将方法的签名更改为返回
Fraction
,而不是
int

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

然后只需将方法的签名更改为返回
Fraction
,而不是
int

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

您的方法
Reduce
声明返回类型为
int
的值,但您的返回行返回的类型为
分数。您需要将代码的第一行从
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);

}

您的方法
Reduce
声明返回类型为
int
的值,但您的返回行返回的类型为
分数。您需要将代码的第一行从
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);

}

将返回类型更改为分数。使用
Reduce(0,20,50)
进行测试,看看您是否得到了预期的结果(或任何没有减少到
1/n
)的分数。将返回类型更改为分数。使用
Reduce(0,20,50)
进行测试,看看您是否得到了预期的结果(或任何没有减少到
1/n
).非常感谢。我不知道您可以返回类名。@KABW:这就是类型。它可以是基本类型,如
int
,也可以是引用类型,如自定义的
Fraction
。所有类型都可以视为(它们从中继承)。顺便说一句,您甚至可以返回
分数的集合,例如
列表
,任何类型都可以。非常感谢。我不知道您可以返回类名。@KABW:这就是类型。它可以是基本类型,如
int
,也可以是引用类型,如自定义的
Fraction
。所有类型都可以视为(它们从中继承)。顺便说一句,您甚至可以返回
分数的集合,例如
列表
,任何类型都是允许的。