【问题标题】:Overloaded unary operator ++ takes one parameter重载的一元运算符 ++ 采用一个参数
【发布时间】:2013-02-15 04:41:37
【问题描述】:

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

我应该怎么做才能重载运算符'++'?

【问题讨论】:

  • 请发布您的完整代码
  • 我已经把上面的完整代码贴出来了。

标签: c# overloading operator-keyword


【解决方案1】:

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

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

有关更多示例,请参阅 MSDN 上的 Operator overloading tutorial

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2011-09-18
      • 2010-10-21
      • 2018-04-25
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多