重载的一元运算符++接受一个参数

本文关键字:参数 一个 一元 重载 运算符 | 更新日期: 2023-09-27 17:59:31

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

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

错误为重载一元运算符++取一个参数

这是classLogItem:的定义

     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; }
     }

我应该怎么做才能使运算符"++"过载?

重载的一元运算符++接受一个参数

运算符需要是其定义类的静态成员,并且在++的情况下采用该类型的参数:

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

有关更多示例,请参阅MSDN上的运算符重载教程。

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

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