繁体   English   中英

哪里重载除法返回自定义类C#operator /(int,int)

[英]Where to overload division returning custom class C# operator/ (int,int)

我正在尝试这样做:

/// <summary>
/// Syntax support for assigning a new Rational from "x/y" notation.
/// </summary>
/// <param name="num">Numerator, appears before the '/'</param>
/// <param name="denom">Denominator, appears after the '/'</param>
/// <returns>A new Rational using the num/denom convention</returns>
public static Rational operator/(int num,int denom)
{
    Rational r;
    try
    {
        r = new Rational(num, denom);
    }
    catch (Exception e)
    {

        throw e;
    }
    return r;
}

但是当我将它作为我的课程的一部分包含在内时,我会收到错误,因为其中一个争论必须是包含类。 我确实注意到,如果我在我的测试程序中将它声明在main()之外,这可以正常工作,但我希望类文件包含所有内容,以便我可以将.cs文件移交。 这是正确的方法吗?

我也试过了

Class Rational
{
     ....
}
public static Rational operator/(...)
{
    ...
}

这不起作用,因为编译器需要interface,delegate,... blah blah intellisense关键字。

谢谢您的帮助!

没有办法做到这一点。 二元运算符重载的要求是其中一个操作数是您声明运算符的类型。 您不能为其他类型声明运算符。 当你考虑它时,你试图声明的运算符实际上是int ,它已经有一个除法运算符。

¶7.3.2:

用户定义的运算符声明始终要求至少有一个参数属于包含运算符声明的类或结构类型。 因此,用户定义的运算符不可能具有与预定义运算符相同的签名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM