我可以在C#4.0中指定默认的Color参数吗?

这是一个示例函数:

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值。

Color.Black是静态的,不是常量,所以不,你不能这样做。

要使用默认值,可以使参数为nullable( Color? ),如果为null,则将其设置为Black。

做这个:

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

保持简单有什么问题?

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