ich die einfache Klasse automatisch implementierte properies mit:Lernen über Auto-Implementiert Eigenschaften
Public Class foo
{
public foo() { }
public string BarName {get; set;}
}
ich natürlich die Variable BarName während meiner Klasse verwenden und müssen nun Logik hinzuzufügen, wenn der Wert der Eigenschaft gesetzt ist (es Muss alles Großbuchstabe sein, gehe Figur). Bedeutet das, dass ich jetzt eine private Variable für BarName erstellen muss, z. _BarName, und ändern Sie die aktuelle BarName-Variable, die in meiner Klasse verwendet wird, in _BarName?
Public Class foo
{
public foo() {}
private string _BarName = "";
public string BarName
{
get {return _BarName;}
set {_BarName = Value.ToString().ToUpper();}
}
}
Ich versuche, um sicherzustellen, verstehe ich die Auswirkungen der Verwendung automatisch implementierte Eigenschaften, und was es mit sich bringen auf dem Weg, wenn/falls ich etwas ändern müssen. Ich gehe davon aus, dass das Refactoring, wie oben gezeigt, keine breaking Änderung ist, weil die Eigenschaft grundsätzlich gleich bleibt; Es brauchte nur ein wenig Arbeit in der Klasse, um es so zu halten und die benötigte Logik hinzuzufügen.
Ein anderes Beispiel, das sinnvoller sein kann, ist, dass ich eine Methode aufrufen muss, wenn ein Setter oder Getter verwendet wird; mehr als den Wert ändern.
Dies scheint ein fairer Kompromiss aus den Zeilen und Zeilen des Codes zu Setup-Eigenschaften.
Ah, also benutze ich selbst die Eigenschaft, um auf die Variable zuzugreifen? Kann das wirklich nicht machen, wenn es nur gelesen wird. Der Code, den ich meinte, dass geändert werden musste, ist/inside/die Klasse – Brettski
In Ihrem Beispiel ist es nicht schreibgeschützt.Jetzt, da Sie es jedoch auf den Punkt bringen, antworte ich darauf, dass Sie die Eigenschaft mit {get; privates Set; } Muster, mit dem Sie aus der Klasse heraus schreiben können. – hurst