J'ai créé une fonction permettant de définir plusieurs propriétés d'un objet à la fois. Si un certain argument n'est pas passé à la fonction, je veux éviter de le modifier/modifier. Un exemple simplifié de la solution la plus propre que je pourrais trouver est la suivante:Passage de null comme paramètre par défaut pour éviter d'utiliser le paramètre
private void setObjectProperties(MyObject myObject, float param1, bool? param2 = null)
{
myObject.param1 = param1;
myObject.param2 = param2 != null ? (bool)param2 : myObject.param2;
}
Comme vous pouvez le voir dans cette méthode, si la fonction est appelée sans param2
être passé alors il vient de mettre myObject.param2
à lui-même. (ce qui signifie que si rien n'est passé à param2
alors la propriété myObject.param2
est intacte)
Ce que j'ai semble un peu compliqué pour moi. Je ne suis pas sûr que ce soit la bonne chose à faire. J'ai pensé à la surcharge des méthodes, mais je pensais que ce serait encore plus désordonné; Dans la situation du monde réel, je passe plus de deux arguments à définir afin que je puisse finir avec beaucoup de surcharges. Est-ce que je manque une fonctionnalité évidente en C# qui me permet de dire "Ne pas définir ce paramètre si rien n'est passé à son argument correspondant"?
Pourquoi la surcharge de méthode existe-t-elle alors? Je garderais le standard afin que quiconque regarde le code sache ce qui se passe –
@FirstStep S'il y avait 5 propriétés, vous auriez besoin de 32 surcharges pour couvrir tous les cas. – Rob
n'est-ce pas 1 ou 2 ou 3 ou 4 ou 5? @rob –