2010-12-16 3 views
2

Mögliche Duplizieren:
Why const parameters are not allowed in C#gibt es sowas wie C++ const in C#?

Ich bin ein C++ Entwickler und ich hatte einige Erfahrung mit C#.

Ich habe immer gefragt, warum es nichts Vergleichbares in C# ist:

bool MyFunction(const AnotherClass& x) 
{ 
    //some stuff 
} 

Ich persönlich denke, dass die Konstantheit eines der besten Features in C++ (es den Entwickler hilft Kapselung und Entkopplung zu erhöhen). Einer der Vorschläge von Sutter (C++ Coding Standards: 101 Regeln, Richtlinien und Best Practices) gibt niemals Ihre Handler zurück, wenn ich nicht an const Referenz vorbeikommen kann, verschenke ich die gesamte Klasse, nicht nur die Handler.

Ist es mein Mangel an Wissen über C#? Gibt es so etwas in C#? Wenn nicht, warum benutzt C# es nicht?

+0

Was hat const Korrektheit entweder mit Verkapselung oder Entkopplung zu tun? – Mud

+0

Ich bin kein C++ Experte, aber ist das nicht nur 'bool MyFunction (AnotherClass x)' in C#? – SWeko

+3

"Warum ...", weil C# eine eingeschränkte Sprache ist, die auf Kosten von Flexibilität und Wartbarkeit einfacher zu sein versucht. – ybungalobill

Antwort

2

Diese Funktionalität in C# nicht verfügbar ist. Sie können eine Kopie übergeben, Sie können das Objekt in einem schreibgeschützten Adapter umbrechen, oder Sie können Verweise auf unveränderbare Objekte/Strukturen übergeben.