Ich frage mich, wie ich diese Art von Konstrukteuren schreiben konnte:Constructor ohne neue C#
Person p = Person.CreateWithName("pedro");
Person p1 = Person.CreateEmpty();
Und mit dem Code jeden Konstruktor in separaten.
Ich frage mich, wie ich diese Art von Konstrukteuren schreiben konnte:Constructor ohne neue C#
Person p = Person.CreateWithName("pedro");
Person p1 = Person.CreateEmpty();
Und mit dem Code jeden Konstruktor in separaten.
Sie es wie folgt implementieren:
public class Person {
// Private (or protected) Constructor to ensure using factory methods
private Person(String name) {
if (null == name)
name = "SomeDefaultValue";
//TODO: put relevant code here
}
// Factory method, please notice "static"
public static Person CreateWithName(String name) {
return new Person(name);
}
// Factory method, please notice "static"
public static Person CreateEmpty() {
return new Person(null);
}
}
Das sind so genannte Factory-Methoden und technisch sind statische Methoden auf die Klasse (Person), die dann auf die Klasse (Person.Create) aufgerufen werden.
Technisch erstellen sie intern die Person mit neuen - aber es kann mit einem PRIVATEN KONSTRUKTOR passieren.
Sie nur eine statische Methode innerhalb dieser Klasse erstellen, das heißt
class Person {
public Person(string name) {
//Constructor logic
}
public static Person CreatePerson() {
return new Person(string.Empty);
}
}
Es ist eine statische Methode. 'public static Person CreateWithName (Name der Zeichenkette) {return new Person() {...}; } ' –