如何在c#中重载postfix和prefix运算符

时间:2012-05-10 10:10:46

标签: c#

我们如何在c#

中实现postfix和prefix运算符的重载
void Main()
{
    MyClass myclass=new MyClass();
    myclass.x=5;
    Console.WriteLine((++myclass).x);
          Console.WriteLine((myclass++).x);
}

public class MyClass
{
    public int x;
    public static MyClass operator ++(MyClass m)
    {
        m.x=m.x+1;
        return m;
    }

}

这可能是一个不必要的运算符重载,但已知++运算符可能会重载。我们如何在这里实现不同的行为(i ++,++ i)

2 个答案:

答案 0 :(得分:2)

从我所看到的,在C#中重载一元运算符++会重载运算符的后缀和前缀版本。

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

答案 1 :(得分:-2)

后缀增量重载采用int参数,前缀不是

喜欢:

public static MyClass operator ++(MyClass m)
{
    m.x=m.x+1;
    return m;
}

public static MyClass operator ++(MyClass m, int i)
{
    m.x=m.x+1;
    return m;
}

但似乎int值无用lol

在此处查看更多信息:http://msdn.microsoft.com/en-us/library/f6s9k9ta(v=vs.80).aspx