OK, also das ist sehr ähnlich - (fast das gleiche) fast - wie der andere hier antwortet.
Ich dachte, ich ein wenig andere Perspektive auf den anderen Antworten geben würde - nur eine alternative Möglichkeit bietet ein public
Verfahren der Verwendung zu nennen ...
Sie könnten die „default“ Werte definieren die Eigenschaften innerhalb der Result
Klasse, indem const
Ameisen (oder auch nur normale Felder) verwendet werden.
Dann legen Sie die Standardwerte der Eigenschaften auf diese Konstanten (oder Felder, je nachdem) fest. Wenn Sie einen neuen Result()
ohne Initialisierer erstellen, wird das Result
Objekt mit diesen Standardwerten erstellt.
Sie können dann eine Reset()
Funktion verwenden, die diese Standardwerte ebenfalls verwendet.
Dies kann sich auch beim Refactoring als etwas einfacher erweisen.
Hier ist, wie Sie Ihre Result
Klasse Eigenschaften und Verfahren definieren könnten:
public class Result
{
private const string defaultMsg = "xxx";
private const bool defaultIsPositive = false;
public string Msg { get; set; } = defaultMsg;
public bool IsPositive { get; set; } = defaultIsPositive;
public void Reset()
{
Msg = defaultMsg;
IsPositive = defaultIsPositive;
}
}
Beachten Sie, dass die public string Msg { get; set; } = defaultMsg;
ist eine schöne Kurz Hand Art und Weise die Eigenschaft der Initialisierung (ich glaube, es ist nur von C# verfügbar 6.0).
könnte andere Möglichkeit, dies durch den Konstruktor zu tun, etwa so:
public Result()
{
Msg = defaultMsg;
IsPositive = defaultIsPositive;
}
Dann ist es so einfach, mit ihm das Erstellen Sie das Objekt, zu tun, was zu konsumieren; und dann den Aufruf der Reset()
Methode:
// create a Result object with its default values
var result = new Result();
// OR
// create a Result object with some non-default values
var result = new Result { Msg = "something", IsPositive = true };
Dann, manipulieren oder tun, was man will, mit Ihrem result
Objekt.
Dann die Werte zurück:
... // do whatever with your result object
// reset the result to its default values
result.Reset();
Nein, es ist nicht. Es ist eine gute Sache, dass Sie dies nicht tun können, da es Lesbarkeit und Wartbarkeit schmerzt, was immer Ihre erste Sorge sein sollte. –
Sie wissen, dass die Initialisierungssyntax kompiliert nur im Grunde die gleiche Sache mit nur einem temporären Wert –
VB.Net hat 'mit', die ähnlich ist, gibt es keine Äquivalenz in C#. –