반응형
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;
}
반응형
'programing' 카테고리의 다른 글
JS : 문자열의 경로에서 파일 이름을 제거하는 가장 최적화 된 방법은 무엇입니까? (0) | 2021.01.18 |
---|---|
모든 쿼리 문자열 이름 / 값 쌍을 컬렉션으로 가져 오는 방법이 있습니까? (0) | 2021.01.18 |
Java : 배열의 하위 집합을 선택하는 쉬운 방법이 있습니까? (0) | 2021.01.18 |
일별 데이터를 월 / 년 간격으로 집계 (0) | 2021.01.18 |
자바의 최종 배열 (0) | 2021.01.18 |