簡體   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