Wann zu benutzen bekommen; einstellen; in c #
Ich versage, zu verstehen, was der Unterschied zwischen Initialisierung einer variable, den Wert wie diese:
//define a local variable.
int i;
i= 0;
Console.WriteLine(i);
- und get; set; Verwendung:
public int i
{
get;
set;
}
i = 0;
Console.WriteLine(i);
Ich ve Lesen Sie einige Artikel, aber nicht verstehen, wenn ich es verwenden würde.
InformationsquelleAutor der Frage The Muffin Man | 2011-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich, in diesem Fall, es gibt keinen Unterschied, der (vielen) Vorteile der Verwendung einer Eigenschaft ist die Fähigkeit, Veranstaltungenum Ihr Eigentum, etwa so:
Dieser ermöglicht, code wissen, wenn ich Sie geändert wurde (es gibt vielleicht einige syntax-Fehler, ich habe nicht konzentriert auf C# in eine Weile, aber die Idee ist ähnlich). Dies ist äußerst wichtig, winforms, denn dies ist die große Möglichkeit zu wissen, wenn eine Taste (oder ähnlich) geklickt wurde.
Können auch für zusätzliche Funktionalität in den setter einer Eigenschaft, z.B. die Prüfung, ob es in einem bestimmten Bereich, so:
InformationsquelleAutor der Antwort Richard J. Ross III
Wenn Sie denken, Sie brauchen könnte eine komplizierte get-oder Set-höher, die automatische Eigenschaft syntax können Sie ein upgrade ohne Neukompilierung aller Anrufer. Die Bewegung von einem Feld (member-Variablen) einer Immobilie ist eine wichtige änderung, jedoch.
Eric Lippert Adressen zum Thema. Zweimal.
InformationsquelleAutor der Antwort Ben Voigt
Die syntax, die Sie beschreiben, ist bekannt als ein auto-Eigenschaft.
Bevor die syntax eingeführt wurde .NET 2.0, erstellten wir eine Eigenschaft, in etwa so:
.NET 2.0 eingeführt die Abkürzung für die syntax, so dass der compiler automatisch zu erstellen, die backing-variable (
_myVar
in meinem Beispiel oben)Der wesentliche Unterschied zwischen dem setzen einer Variablen und einer Eigenschaft wie diesem ist, dass wir kontrollieren können, das abrufen und festlegen der Eigenschaft (nur-lese-Eigenschaften, oder eine Funktion aufgerufen wird, wenn ein Wert gesetzt ist, um die Eigenschaft, zum Beispiel.)
InformationsquelleAutor der Antwort Kyle Trauberman
Vergessen können Eigenschaften für eine Sekunde... die wirkliche Frage, Die Sie Fragen (und Sie könnten es gar nicht wissen) ist, warum tun Sie müssen Eigenschaften (oder Getter und setter in einigen anderen Sprachen) in den ersten Platz?
Es zu fördern Kapselung.
Eigenschaften bieten nur eine schönere syntax für Getter und setter, auch bekannt als Zugriffs - (und in der Tat, eine Eigenschaft einfach-Wickel-set() und get() Methoden unter der Haube).
In c# 3 c# - team kam mit auto-Eigenschaften, da die überwiegende Anzahl von Eigenschaften, die nichts mit den Variablen (keine zusätzliche Logik), also auto Eigenschaften sind kurzer hand für dieses Szenario.
InformationsquelleAutor der Antwort Giovanni Galbo
Im Grunde ist es fügt overhead im Austausch für die Fähigkeit, fügen Sie einen Ereignis. Abgesehen davon, dass es erhöht die Komplexität und die Ausführlichkeit, das macht den code schwerer zu Lesen. Wenn Sie brauchen, um hinzuzufügen, validation-Handler, es ist eine nette Möglichkeit, es zu tun. In einigen Fällen. In den meisten Fällen, Sie wissen (und wissen wollen), wo genau eine variable (Mitglied) geändert wird. Wenn nicht, dann haben Sie eine code-management-problem, nicht ein Thema Sprache.
Die Idee, dass alles, was "Objekt-orientiert" ist besser, ist falsch. Die meisten Entwickler kommen, das zu verstehen. Ich mache diese Arbeit seit 30 Jahren, und ich kann Ihnen sagen, dass 98 mal von 100 - einfach besser. Verbringen Sie Ihre coding-Aufwand auf effiziente algorithmen, nicht unnötig Komplex, und Sie gehen weit und trends überleben.
InformationsquelleAutor der Antwort TJ Powell
schafft Eigenschaft auto
i
Typint
kurz für
InformationsquelleAutor der Antwort Bala R
Es ist im Grunde Konzept der objektorientierten Programmierung.
wenn Sie int i; ( Das betrachten Sie als Feld-und dieses Feld kann die interne Verwendung als auch wie es sein kann, außerhalb der aktuellen Klasse je nach zugriffsmodifizierer. (Public , Private , Protected)
Nun, wenn Sie get; set; es ist die Eigenschaft der Klasse. Es können auch aus anderen Klasse, aber diffrence es ist der Zugang, wie Methode und es werden weitere Funktionen, wie die Meldung der änderung der Eigenschaft und all das.
Verwenden Sie eingereicht, wenn Sie nicht wollen, dass jeder die Kontrolle über Sie, aber wenn Sie Steuern möchten, dann verwenden Sie die Eigenschaft. Auch Sie können get-und set mit public , private und protected, die auch
mehr Flexibilität bieten interm von encaptulation.
InformationsquelleAutor der Antwort dotnetstep