Можно ли указать параметр цвета по умолчанию в С# 4.0?

Вот примерная функция:

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

Компилятор продолжает давать мне ошибку: Default parameter value for 'boxColor'must be a compile-time constant

Я пробовал

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

Как сделать Color.Black цветом по умолчанию? Кроме того, я не хочу использовать строку Black, чтобы указать ее (что я знаю, будет работать). Я хочу значение Color.Black.

Ответы

Ответ 1

Color.Black является статичным, а не постоянным, поэтому нет, вы не можете этого сделать.

Чтобы использовать значение по умолчанию, вы можете сделать параметр нулевым (Color?), а если он равен null, установите его на черный.

Ответ 2

Сделайте это:

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

  // ...
}

Ответ 3

Что не так, если держать его простым?

public void DrawSquare(int x, int y)
{
    DrawSquare(x,y,Color.Black);
}

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