c# - Einstellung Wert der privaten variable
ich bin mit einer get - /Set-Eigenschaften zu setzen oder Variablen, mein code ist in Ordnung, wenn ich die öffentliche variable für den Wert für die Einstellung, wie ich ein array meiner Klasse, aber ich Frage mich nur, wie set den Wert der privaten variable . Mein code ist
public class Person
{
//getter and setter for each variable
private string _Name;
public string Name
{
get { return _Name;}
set { _Name= value; }
}
private int _Age;
public int Age
{
get {return _Age; }
set { _Age= value; }
}
.... //other properties
//Another Class
public void setValues (Person[] p,int i)
{ p[i].Age= 30;
}
Aber wie setzt man die variable, wenn ich mein set-variable private ??
private int _Age;
public int Age
{
get {return _Age; }
private set { _Age= value; }
}
- sorry Ihr Alter nicht Titel
- Warum wollen Sie das tun?
- mein Chef sagte mir die Benutzung von privaten für die Einstellung einer Variablen
- Gut, dann der einzige Weg wäre, die intern auf die Klasse, so müssen Sie möglicherweise erstellen Sie einen überladenen Konstruktor oder eine Methode als ein setter, aber dies scheint albern. Haben Sie schaute auf die interne access-modifier möglich?
- Ich bin mir ziemlich sicher, dass entweder Sie oder Ihr Chef hat falsch verstanden, wie diese Klasse verwendet werden soll.
- Private Variablen können nur innerhalb der Klasse selbst. Das ist Ihr ganzer Zweck.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie änderungen an Ihrer set-Methode auf privat, Sie werden nicht in der Lage, um den Wert der Immobilie außerhalb der Klasse; das ist der ganze Punkt des
private
Schlüsselwort. Ich würde überlegen, dieprotected
oderinternal
keywords anstelle, wenn Sie vermeiden wollen, dass es öffentlich.Oder, wie JNYRanger sagt, Sie können das als setter von einem Konstruktor, die es Ihnen ermöglichen, effektiv zu setzen, dass der Wert "außerhalb" der aktuellen Klasse.
Beispiel:
Kann ich nicht zurückentwickeln Ihrem Chef zu verstehen, warum er der Empfehlung nicht zu verwenden öffentliche setter. Wenn ich musste eine Vermutung, aber ich würde sagen, er ist ermutigend, dass Sie Ihre Klassen unveränderlich sind.
Unveränderbarkeit bedeutet, dass Sie nicht ändern können, den Zustand einer Klasse nach der Erstellung (also keine öffentlichen Set-Methoden oder Methoden, die verändern den internen Zustand). Es hat verschiedene Vorteile (z.B. kann man eine Lesen zu Was ist der Vorteil von einem String Unveränderbarkeit?).
Also wie ändert man das Alter eines
Person
nach dem anlegen, wenn Sie keine setter? Das können Sie nicht. Erstellen Sie eine neuePerson
mit, das erforderliche Alter und "wegwerfen" der anderePerson
.Referenz Sie können Lesen Gewusst wie: Implementieren einer Leichten Klasse mit Automatisch Implementierten Eigenschaften
Nun zu Ihrem Beispiel:
hätten Sie
Sind Sie auf der Suche nach diesem:
Es ist einfach zu verwalten, und Sie müssen nicht zu verwenden
_Age
.In Ihrem Fall
_Age
ist nicht erforderlich.// Another Class
internal
stattprivate
Person
. Sie würden dann in der Lage sein, Zugang zu persönlichen Bereichen.