DTo*_*own 54 c# optional-parameters
public void log(String msg, Color c = Color.black)
{
loggerText.ForeColor = c;
loggerText.AppendText("\n" + msg);
}
Run Code Online (Sandbox Code Playgroud)
这会导致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);
}
Run Code Online (Sandbox Code Playgroud)
sco*_*obi 108
我也遇到过这种情况,我发现的唯一解决方法是使用nullables.
public void log(String msg, Color? c = null)
{
loggerText.ForeColor = c ?? Color.Black;
loggerText.AppendText("\n" + msg);
}
Run Code Online (Sandbox Code Playgroud)
其他可能的语法是:
loggerText.ForeColor = c.GetValueOrDefault(Color.Black);
Run Code Online (Sandbox Code Playgroud)
您可以检查Color是否为Color.Empty(这是默认值:) default(Color)或使用可空值并检查null.
public void log(String msg, Color? c = null) { ... }
Run Code Online (Sandbox Code Playgroud)