개인 프로젝트를 위해 텍스트 기반 메뉴 시스템을 구축하고 있습니다. 해당 메뉴의 옵션에는 텍스트와 작업 (메소드 호출)이 있습니다. 그래서 델리게이트를 사용하는 것이 합리적이라고 생각했습니다.
그래서 델리게이트를 addOption ()에 대한 선택적 매개 변수로 사용하려고했는데 오류가 발생했습니다.
오류 'optionAction'의 기본 매개 변수 값은 컴파일 타임 상수 여야합니다.
그래서 나는 이것을 어떻게 피할 수 있는지 정확히 모르겠습니다. 내 말은 컴파일 시간 상수 여야한다는 뜻입니다. 내 메서드 defaultod ()가 컴파일 타임에 변경 될 가능성은 논리적으로 볼 수 없지만 Visual Studio에서는 가능하면 해결 방법이 필요합니다.
이것은 문제의 코드 샘플입니다. 그리고 요청하면 더 많이 보여 드리겠습니다.
private delegate void defaultOption();
private void defaultOptionCall() { }
public void addOption(string optiontext,
Delegate optionAction = new defaultOption(defaultOptionCall))
{
}
Action
동일한 아이디어이지만 구문과 구현이 더 쉬우므로 사용하는 것이 좋습니다 .
public void addOption(string optiontext, Action optionAction = null)
{
if (optionAction == null)
{
defaultOptionCall();
// whatever else you need
return;
}
// to run the action
optionAction.Invoke();
}
이것은 당신이 선택한 문자열과 메서드를 전달하고 ref
. 기술적 Action
으로는 이미 암시 된 것처럼 위임의 한 형태입니다. 샘플 사용 사례 ...
addOption("default");
addOption("hello", () => { Console.WriteLine("Hello!") });
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다