重载的一元运算符++需要一个参数

时间:2013-02-15 04:41:37

标签: c# overloading operator-keyword

我想在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; }
     }

如何重载运算符'++'?

2 个答案:

答案 0 :(得分:5)

运算符需要是其定义类的静态成员,如果++采用该类型的参数:

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

有关更多样本,请参阅MSDN上的Operator overloading tutorial

答案 1 :(得分:1)

在C#中重载一元运算符++会重载运算符的后缀和前缀版本。

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