programing

C # 4.0 : 기본값이있는 선택적 매개 변수로 Color를 사용할 수 있습니까?

minecode 2021. 1. 18. 07:49
반응형

C # 4.0 : 기본값이있는 선택적 매개 변수로 Color를 사용할 수 있습니까?


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

나는 이것도 만났고 내가 찾은 유일한 해결 방법은 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)하거나 nullable 값을 사용하고 null을 확인할 수 있습니다.

public void log(String msg, Color? c = null) { ... }

색상을 지정하지 마십시오. 대신 "오류 수준"을 제공하고 각 오류 수준과 색상 값을 매핑합니다. 이렇게하면 0 이하가 검은 색, 1 = 호박색,> 2 = 빨간색이 될 수 있습니다. 기본값에 대해 걱정하거나 값을 지정하지 않아도됩니다.


사용법 제안 :

public GraphicsLine(Point startPoint, Point endPoint, Color? color = null, double width = 1.0)
{
    StartPoint = startPoint;
    EndPoint = endPoint;
    Color = color ?? Colors.Black;
    Width = width;
}

참조 URL : https://stackoverflow.com/questions/2804395/c-sharp-4-0-can-i-use-a-color-as-an-optional-parameter-with-a-default-value

반응형