55 votes

C# 4.0 : Puis-je utiliser une couleur comme paramètre facultatif avec une valeur par défaut ?

    public void log(String msg, Color c = Color.black)
    {
        loggerText.ForeColor = c;
        loggerText.AppendText("\n" + msg);

    }

Il en résulte une erreur selon laquelle c doit être une constante de temps de compilation. J'ai lu un peu sur ce sujet et la plupart des exemples traitent des chaînes de caractères et des ints. J'ai compris que je pouvais utiliser la classe colorconverter mais je ne suis pas sûr que ce soit très efficace. Existe-t-il un moyen de transmettre une couleur de base en tant que paramètre facultatif ?

    public void log(String msg, String c = "Black")
    {
        ColorConverter conv = new ColorConverter();
        Color color = (Color)conv.ConvertFromString(c);

        loggerText.ForeColor = color;
        loggerText.AppendText("\n" + msg);
    }

110voto

Scott Bilas Points 4958

J'ai également rencontré ce problème et la seule solution que j'ai trouvée est d'utiliser des nullables.

public void log(String msg, Color? c = null)
{
    loggerText.ForeColor = c ?? Color.Black;
    loggerText.AppendText("\n" + msg);
}

9voto

Simon Points 5327

Vous pourriez vérifier si Color est Color.Empty (qui est la valeur par défaut) : default(Color) ) ou utiliser une valeur nullable et vérifier si elle est nulle.

public void log(String msg, Color? c = null) { ... }

3voto

Neil Barnwell Points 20731

Ne spécifiez pas la couleur. Fournissez plutôt un "niveau d'erreur" et établissez une correspondance entre chaque niveau d'erreur et une valeur de couleur. Ainsi, 0 et les niveaux inférieurs pourraient être noirs, puis 1 = ambre, >2 = rouge. Il n'est pas nécessaire de s'inquiéter des valeurs par défaut et/ou de ne pas spécifier de valeur.

1voto

Eric Ouellet Points 1370

Suggestion d'utilisation :

public GraphicsLine(Point startPoint, Point endPoint, Color? color = null, double width = 1.0)
{
    StartPoint = startPoint;
    EndPoint = endPoint;
    Color = color ?? Colors.Black;
    Width = width;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X