0

C# で演算子 '++' をオーバーロードしたいのですが、次のコードを記述したときに、VS 2012 でエラー メッセージが表示されます。

    public LogItem operator ++()
    {
        ++ visitTimes;
    }

エラーはOverloaded unary operator ++ takes one parameter です

そして、クラスLogItemの定義は次のとおりです。

     public class LogItem
     {
        /**
         * Constructor
         */
        public LogItem(string ip)
        {
            ipAddress = ip;
            visitTimes = 0;
        }

        /**
         * Operator Overload Function
         */
        public LogItem operator ++() 
        {
            ++ visitTimes;
        }

        public string ipAddress { get; private set; }
        public string location { get; set; }
        public int visitTimes { get; private set; }
     }

演算子「++」をオーバーロードするにはどうすればよいですか?

4

2 に答える 2

5

演算子は、その定義クラスの静的メンバーである必要があり、++そのタイプの引数を取る場合:

public class LogItem
{ 
    ....
    public static LogItem operator ++(LogItem item) 
    {
       item.visitTimes ++;
       return item;
    }
}

その他のサンプルについては、MSDN のオペレーター オーバーロードのチュートリアルを参照してください。

于 2013-02-15T04:48:17.723 に答える
1

C# で単項演算子 ++ をオーバーロードすると、演算子の後置バージョンと前置バージョンの両方がオーバーロードされます。

参照: http://devhawk.net/2003/07/09/operator-overloading-in-c/ http://www.programmingvideotutorials.com/csharp/csharp-operator-overloading

于 2013-02-15T04:47:59.267 に答える