Utilisation d'une énumération en tant que paramètre facultatif
J'ai plusieurs méthodes dans une application que je suis en train de travailler sur chargé avec des paramètres optionnels, dont certains sont des enums. Actuellement, afin de faire que je suis en train d'écrire des méthodes avec un type similaire de la signature:
public void SomeMethod(string myFirstParam = "", string mySecondParam = "", MyEnum myThirdParam = (MyEnum )(-1)){
if (myThirdParam != (MyEnum ) (-1))
{
//do something with it
}
}
Donc, ma première question est, est-il un piège à cette approche, je n'ai pas réalisé, mais le temps va devenir douloureusement conscient, et d'autre part, est-il plus approprié - ou au moins une solution élégante pour elle?
Je dois dire que nous avons le contrôle de l'entrée de cette méthode, il est utilisé en interne, donc je ne suis pas inquiet au sujet de quelqu'un casting à une valeur de -1 à la gomme jusqu'à l'usine.
source d'informationauteur El Kabong
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre
enum
a une valeur par défaut (égal à zéro), qui signifie "aucun" ou "invalide". Ce serait une bonne valeur pour votre option valeur par défaut du paramètre.Ce qui est recommandé par Microsoft d'Analyse de Code, CA1008: les Énumérations doit avoir la valeur zéro.
Par exemple:
De cette façon, le
default
mot clé fournit une valeur qui est sain d'esprit, mais n'a pas, involontairement, se référer à quelque chose que vous ne voulez pas à.Comme un exemple, la BCL utilise ce même concept. Le nombre de bits d'arrêt à utiliser pour un
SerialPort
est définie par laArrêt
enum:Cependant la
None
valeur n'est pas valide. En fait,Je conseille nullable enum dans cette situation, comme ceci:
et vous pouvez l'utiliser comme ceci:
Ce sujet :