0

我想在 C# 中重载运算符“++”,但是当我编写以下代码时,VS 2012 给了我一条错误消息。

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

错误是重载一元运算符++采用一个参数

我这里是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 回答