70
    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);
    }
4

4 に答える 4

133

私もこれに遭遇しましたが、私が見つけた唯一の回避策は、nullables を使用することです。

public void log(String msg, Color? c = null)
{
    loggerText.ForeColor = c ?? Color.Black;
    loggerText.AppendText("\n" + msg);
}

他の可能な構文は次のとおりです。

loggerText.ForeColor = c.GetValueOrDefault(Color.Black);
于 2010-05-10T16:29:07.863 に答える
9

Color が Color.Empty (デフォルト値: default(Color)) であるかどうかを確認するか、null 許容値を使用して null を確認できます。

public void log(String msg, Color? c = null) { ... }
于 2010-05-10T16:29:50.957 に答える
3

色は指定しないでください。代わりに「エラー レベル」を指定し、各エラー レベルと色の値をマッピングします。このように、0 以下は黒、1 = 琥珀、>2 = 赤となります。デフォルト値や値を指定しないことについて心配する必要はありません。

于 2010-05-10T16:35:15.527 に答える
1

使用上の提案:

public GraphicsLine(Point startPoint, Point endPoint, Color? color = null, double width = 1.0)
{
    StartPoint = startPoint;
    EndPoint = endPoint;
    Color = color ?? Colors.Black;
    Width = width;
}
于 2013-02-19T15:43:52.497 に答える