Puis-je spécifier un paramètre de couleur par défaut en C # 4.0?

Voici un exemple de fonction:

public void DrawSquare(int x, int y, Color boxColor = Color.Black) { //Code to draw the square goes here } 

Le compilateur continue de me donner l’erreur suivante: la Default parameter value for 'boxColor'must be a comstack-time constant

j’ai essayé

 Color.Black, Color.FromKnownColor(KnownColor.Black), and Color.FromArgb(0, 0, 0) 

Comment faire Color.Black être la couleur par défaut? En outre, je ne veux pas utiliser une chaîne Black pour la spécifier (ce qui, je le sais, fonctionnerait). Je veux la valeur Color.Black .

    Color.Black est une statique, pas une constante, donc non, vous ne pouvez pas faire cela.

    Pour utiliser une valeur par défaut, vous pouvez rendre le paramètre nullable ( Color? ) Color? S’il est null, définissez-le sur Noir.

    Faire ceci:

     void foo(... Color boxColor = default(Color)) { if(object.Equals(boxColor, default(Color))) boxColor = Color.Black; // ... } 

    Quel est le problème avec garder les choses simples?

     public void DrawSquare(int x, int y) { DrawSquare(x,y,Color.Black); } public void DrawSquare(int x, int y, Color color) { // Do your thing. }