ReadOnly-Eigenschaft oder die Eigenschaft mit privaten, die ich verwenden sollten vb.net?
Mag Ich .NETTO-automatische Eigenschaften in C# ist es so einfach zu erklären readonly
Eigentum durch Deklaration seiner set
Abschnitt als private
wie diese:
public String Name{ get; private set; }
Aber als ich versuchte, die in VB.NET ich war schockiert, dass es nicht unterstützt, wie bereits erwähnt hier und ich muss schreiben es wie folgt:
Private _Name as String
Public ReadOnly Property Name as String
Get
return _Name
End Get
End Property
Oder:
Private _Name as String
Public Property Name as String
Get
return _Name
End Get
Private Set(value as String)
_Name = value
End Set
End Property
Was der Unterschied zwischen diesen Erklärungen in VB.NET
, die man bevorzugt, und Warum?
Bearbeiten
Welche Auswirkungen auf compile-Zeit, Laufzeit oder Leistung überhaupt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Fall von
ReadOnly
nur diejenigen, die Zugriff auf die zugrunde liegenden Variablen ändern kann, den zugrunde liegenden Wert (d.h. die Elemente innerhalb der gleichen Klasse, zum Beispiel) durch die direkte Anwendung einer solchen änderung. Im letzteren FallPrivate Set
- das ist viel das gleiche - Elemente in den Gültigkeitsbereich der Klasse ändern kann, den zugrunde liegenden Wert, aber so tun können, durch die Eigenschaft.Welche man bevorzugt, ist umständlich: ein Vorteil von Eigenschaften ist, dass Sie können, wie eine Methode, haben weiter an der Umsetzung beteiligt ist, wenn die Anwendung die änderung (obwohl die Nebenwirkungen, die vermieden werden sollten, könnten Sie 'validieren', und Ausnahme, zum Beispiel). Wenn es immer etwas anderes zu tun ist, wenn der Wert, das ist stark verbunden mit der Einstellung der Wert, Sie könnte es tun, in dieser Eigenschaft setter, im Gegensatz zu code, dass die Umsetzung überall tun Sie das
set
.den ersten block wird nur damit Sie den Wert von Name. Sie können nicht Namen.
den zweiten block können Sie den Wert von Name innerhalb der Klasse. Beispiel:
Ich würde die option 1, weil die zweite option verbose, ohne realen Wert.
Die erste Eigenschaft Erklärung
ReadOnly
macht es so, dass die Eigenschaft kann nicht geändert werden alle. Die zweitePrivate Set
ermöglicht die Eigenschaft geändert werden innerhalb der Klasse, in der Sie arbeitenMe.Name = "str"
.In beiden Fällen wird der zugrunde liegende Wert kann noch geändert werden innerhalb der Klasse mit
_Name = "str"
.Beachten Sie, dass wenn Sie die Roslyn-Compiler (.NET 4.6 und höher VS.NET 2015+), dann auch wenn die kurzen VB.NET Formular wird verwendet,
ohne private Variablen, Konstruktoren für die Klasse sind immer noch erlaubt, belegen Sie die readonly-Eigenschaft. Sie können sogar übergeben Sie die Eigenschaft andere Funktionen als
ByRef
parameter.DotNetFiddle dieser Klasse