DTo*_*own 54 c# optional-parameters
    public void log(String msg, Color c = Color.black)
    {
        loggerText.ForeColor = c;
        loggerText.AppendText("\n" + msg);
    }
这会导致c必须是编译时常量的错误.我已经阅读了这一点,大多数例子都是处理字符串和整数.我已经发现我可以使用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);
    }
sco*_*obi 108
我也遇到过这种情况,我发现的唯一解决方法是使用nullables.
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) { ... }