C#4.0:我可以使用一个颜色作为一个可选参数与默认值?
public void log(String msg, Color c = Color.black) { loggerText.ForeColor = c; loggerText.AppendText("\n" + msg); }
这会导致错误c必须是编译时常量。 我已经阅读了这一点,大多数的例子是处理string和整数。 我已经想通了,我可以使用colorconverter类,但我不知道这将是非常有效的。 有没有办法只传递一个基本的颜色作为一个可选的参数?
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); }
我也遇到过这个问题,唯一的解决办法是使用空string。
public void log(String msg, Color? c = null) { loggerText.ForeColor = c ?? Color.Black; loggerText.AppendText("\n" + msg); }
其他可能的语法是:
loggerText.ForeColor = c.GetValueOrDefault(Color.Black);
你可以检查Color是否为Color.Empty(默认值是: default(Color)
),或者使用可为空的值并检查是否为null。
public void log(String msg, Color? c = null) { ... }
不要指定颜色。 提供一个“错误级别”,并在每个错误级别和一个颜色值之间进行映射。 这样0和以下可能是黑色的,然后1 =琥珀色,> 2 =红色。 无需担心默认值和/或不指定值。
使用build议:
public GraphicsLine(Point startPoint, Point endPoint, Color? color = null, double width = 1.0) { StartPoint = startPoint; EndPoint = endPoint; Color = color ?? Colors.Black; Width = width; }