Ich sehe das oft in C# Dokumentation ruhig. Aber was macht es?Was bedeutet das? öffentlicher Name {get; Set;}
public class Car
{
public Name { get; set; }
}
Ich sehe das oft in C# Dokumentation ruhig. Aber was macht es?Was bedeutet das? öffentlicher Name {get; Set;}
public class Car
{
public Name { get; set; }
}
Es ist eine Abkürzung für:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
Der Compiler erzeugt die Elementvariablen. Dies wird automatic property genannt.
... obwohl der Name des Feldes tatsächlich ein "unaussprechlicher" Name ist (z. B. '<> __ name'), der als C# -Kennung ungültig ist. Dies verhindert, dass Sie direkt von Ihrem Code auf das Feld zugreifen. Der Spezifikationsbegriff ist "automatisch implementiertes Eigentum", aber die meisten Leute nennen es tatsächlich eine automatische Eigenschaft :) –
@phoog: Sicher meinst du 'Pedantismus' (oder wie Mark darauf hingewiesen hat - 'Pedanterie')? : D – stuxnetting
@stuxnetting "Pedanterie" war ein Witz. Ich sag bloß'. Für die Aufzeichnung und alles. – phoog
Es ist eine automatische Lese-Schreib-Eigenschaft. Es ist ein C# 3.0-Zusatz. Etwas wie:
public class Car {
private string name;
public string Name { get { return name; } set { name = value; } }
}
mit der Ausnahme, dass Sie nicht direkt auf das Hintergrundfeld zugreifen können.
Es ist die equivilent tun:
private string _Text;
public string Text
{
get { return _Text; }
set { _Text = value; }
}
Außer Sie keinen Zugriff auf die private Variable haben, während in der Klasse.
Also, wenn Sie die private Variable behalten möchten, müssen Sie das "alte" Format verwenden (wie in Ihrem Beispiel)? – Rado
Es heißt eine Auto-Implementierte Eigenschaft und ist new to C# 3.0. Es ist eine sauberere Syntax, wenn Ihr Zugriff auf die Eigenschaft kein spezielles Verhalten oder keine Validierung erfordert. Es ist in seiner Funktion ähnlich:
public class Car
{
private string _name;
public string Name
{
get { return _name; }
set {_name = value; }
}
}
So ist es eine ganze Menge Code speichert, sondern lässt Sie die Möglichkeit, später die Zugriffslogik ändern, wenn das Verhalten oder Regeln ändern müssen.
Zusammenfassung: In C# 3.0 und später automatisch implementierte Eigenschaften machen Eigenschaft Deklaration prägnanter, wenn keine zusätzliche Logik in den Eigenschaftenaccessoren erforderlich ist.
In einfachen Worten werden sie als Eigentum Accessoren bezeichnet. Ihre Umsetzung kann wie folgt
1.Get {return name} Der Codeblock in der get-Accessor erläutert wird ausgeführt, wenn die Eigenschaft Lesen.
2.set {Name = Wert} Der Codeblock im Set-Accessor wird ausgeführt, wenn die Eigenschaft Assigned einen neuen Wert zugewiesen ist.
Eg.(Vorausgesetzt, dass Sie C# verwenden)
class Person
{
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
set
{
name = value;
}
}
}
Nun, wenn Sie auf diese Eigenschaft verweisen, wie unten
Person p = new Person(); // Instanzieren der Klasse oder ein Objekt zu schaffen ' p‘der Klasse 'Person'
System.Console.Write(p.Name); //The get accessor is invoked here
Der Get Accessor wird aufgerufen Lesen der Wert der Eigenschaft, dass der Compiler versucht, den Wert der Zeichenfolge 'Name' zu lesen.
2.When Sie Wert (mit einem Argument) auf die Eigenschaft 'Name' zuweisen, wie unten
Person p = new Person();
p.Name = "Stack" // the set accessor is invoked here
Console.Writeline(p.Name) //invokes the get accessor
Console.ReadKey(); //Holds the output until a key is pressed
Das Set Accessor Ordnet der Wert ‚Stack“ auf die ‚Eigenschaft Name dh 'Stack' wird in der Zeichenfolge 'Name' gespeichert
Ouput.
Stapel
Was ist der Grund dafür, dass man überhaupt ein und ausgeht, warum man nicht nur einen Accessor für Setting und Getting benutzt, so scheint diese Frage niemand zu beantworten. – JsonStatham
Kann ich fragen, warum dies als Duplikat markiert wurde? Das wurde 2009 gefragt und das "Original" wurde 2011 gefragt! – Nathangrad