Сделайте это:
void foo(... Color boxColor = default(Color))
{
if(object.Equals(boxColor, default(Color))) boxColor = Color.Black;
// ...
}
В сторону: мне нравится использовать object.Equals
статический метод, потому что это последовательный способ написать сравнение на равенство. С ссылочными типами, такими как string
, str.Equals("abc")
может выдавать NRE, тогда как string.Equals(str, "abc"[,StringComparison.___])
- нет. Color
является типом значения и поэтому никогда не будет нулевым, но лучше быть последовательным в стиле кода, особенно при нулевых дополнительных затратах. Очевидно, что это не относится к примитивам, таким как int
и даже DateTime
, где ==
ясно заявляет / сообщает сравнение математического равенства.
Или со значением nullables (благодарность ответу Брайана Болла):
void foo(... Color? boxColor = null)
{
if(boxColor == null) boxColor = Color.Black;
// ...
}