zu vermeiden Ich habe eine Funktion erstellt, um mehrere Eigenschaften eines Objekts gleichzeitig festzulegen. Wenn ein bestimmtes Argument nicht an die Funktion übergeben wird, möchte ich es nicht setzen/ändern. Ein vereinfachtes Beispiel für die sauberste Lösung ich tun konnte, ist dies:Null als Standardparameter übergeben, um die Verwendung des Parameters
private void setObjectProperties(MyObject myObject, float param1, bool? param2 = null)
{
myObject.param1 = param1;
myObject.param2 = param2 != null ? (bool)param2 : myObject.param2;
}
Wie Sie von dieser Methode sehen, wenn die Funktion aufgerufen wird, ohne param2
dann wird es übergeben wird nur myObject.param2
zu selbst festgelegt. (Das heißt, wenn nichts an param2
weitergegeben wird, dann ist die myObject.param2
Eigenschaft unberührt)
Was ich habe, scheint ein bisschen chaotisch zu mir. Ich bin mir nicht sicher, ob es das "Richtige" ist. Ich habe über Überladung der Methode nachgedacht, aber ich dachte, dass das noch unordentlicher wäre; In der realen Situation übergebe ich mehr als zwei zu setzende Argumente, so dass ich viele Überlastungen bekommen könnte.
Fehle ich einige offensichtliche Funktionalität in C#, die mir erlaubt zu sagen "Setze diesen Parameter nicht, wenn nichts an das entsprechende Argument übergeben wird"?
Warum gibt es dann eine Überladung? Ich würde es Standard beibehalten, so dass jeder, der sich den Code anschaut, weiß, was passiert –
@FirstStep Wenn es fünf Eigenschaften gäbe, müssten Sie 32 Überladungen verwenden, um alle Fälle abzudecken. – Rob
ist es nicht 1 oder 2 oder 3 oder 4 oder 5? @rob –