我想在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; }
}
如何重载运算符'++'?
答案 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