gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:58 27 4
gpt4 key购买 nike

我正在尝试这样做:

/// <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)、...等等智能感知关键字。

感谢您的帮助!

最佳答案

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

¶ 7.3.2:

User-defined operator declarations always require at least one of the parameters to be of the class or struct type that contains the operator declaration. Thus, it is not possible for a user-defined operator to have the same signature as a predefined operator.

关于c# - 在哪里重载除法返回自定义类 C# operator/(int,int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com