2012-05-10 14 views
5

Jak wdrożyć przeciążenie operatorów Postfix oraz prefiks w C#jak przeciążenie Postfix oraz operatora przedrostka w 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; 
    } 

} 

Może to być niepotrzebnym przeciążeniem operator, ale jej Wiadomo, że ++ operator może być przeciążony . W jaki sposób możemy osiągnąć różne zachowanie tutaj (i ++, ++ i)

+1

możliwe duplikat [postinkrementacja Operator przeciążenia] (http://stackoverflow.com/questions/668763/post-increment-operator-overloading) – Jon

+0

Próbowałem szukając go, dzięki Jon !! – singsuyash

+1

publiczny statyczny operator MyClass ++ (MyClass m) \t { \t \t return new MyClass() {x = m.x + 1}; \t} działa! – singsuyash

Odpowiedz

-1

Przeciążenie przyrost postfix potrwać parametry Int i przedrostek nie

jak:

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

ale wydaje się, że wartość int jest bezużyteczny lol

zajrzeć tutaj, aby uzyskać więcej informacji: http://msdn.microsoft.com/en-us/library/f6s9k9ta(v=vs.80).aspx

+1

To jest przykład C++. Czy to działa również w języku C#? – sohil

+0

link jest w kontekście C++ nie mam pewności, dlaczego musimy przekazać int i jako parametr, nie wiem, jak to działa – singsuyash

+0

To nie działa dla mnie – singsuyash