2012-05-10 87 views
5

我们如何实现在C#中后缀和前缀运算符重载如何重载在C#后缀和前缀操作

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

} 

,这可能是不必要的操作符重载,但它知道,++运算符可以被重载。我们如何在这里实现了不同的行为(我+ +,+ +1)

+1

[后递增运算符重载(http://stackoverflow.com/questions/668763/post-increment-operator-overloading) – Jon

+0

我试图寻找它的可能重复,感谢乔恩! – singsuyash

+1

public static MyClass operator ++(MyClass m) \t { \t \t return new MyClass(){x = m.x + 1}; \t} 作品! – singsuyash

回答

-1

后缀增量超载采取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值是没用的笑

看看这里的更多信息:http://msdn.microsoft.com/en-us/library/f6s9k9ta(v=vs.80).aspx

+1

这是一个C++的例子。这是否也在C#中工作? – sohil

+0

该链接是在C++的上下文我不知道为什么我们需要通过int我作为参数,不知道如何使其工作 – singsuyash

+0

这不适用于我 – singsuyash