나는 다음과 같은 컴파일하려고 :.NET 대리자를 정적으로 선언 할 수없는 이유는 무엇입니까?
public static delegate void MoveDelegate (Actor sender, MoveDirection args);
내가 오류로 나타납니다. "변경 용 '정적'는이 항목에 대한 유효하지 않습니다"
위임자를 호출하는 별도의 클래스를 사용하여 이것을 싱글 톤 내에서 구현하고 있습니다. 문제는 다른 클래스의 싱글 톤 인스턴스를 사용하여 식별자가 아닌 형식에서 대리자를 호출 할 때 비 정적 인 대리자를 선언 할 때도 어떤 이유에서든이를 수행 할 수 없다는 것입니다. 분명히 대리자가 정적 인 경우에만 유형을 통해 직접 참조 할 수 있습니다.
이유가 무엇입니까? MonoDevelop 2.4.2를 사용하고 있습니다.
갱신
다음 코드로 제안 중 하나를 시도 후 : 내가 처리 오류가 발생했습니다
public void Move(MoveDirection moveDir)
{
ProcessMove(moveDir);
}
public void ProcessMove(MoveDirection moveDir)
{
Teleporter.MoveMethod mm = new Teleporter.MoveMethod(Move);
moveDelegate(this, moveDir);
}
의 MoveMethod이 형, 그리고이 아니라해야한다는 식별자.
약간의 코드 예제가 문제를 설명하는 데 도움이된다고 생각합니다. 나는 두 번째 단락을 다섯 번 읽었으며 아직도 무엇을 어떻게 성취하고 싶은지 전혀 모른다. –
'ProcessMove' 메쏘드에서'mm' 변수의 목적은 무엇입니까? 만약 어떤 delegate (static 또는 instance)가'moveDelegate'에 할당되면,'moveDelegate'를 호출하면 할당 된 델리게이트가 호출됩니다. – Groo
인터페이스가 더 좋다고 생각합니다. [내 대답]을 참조하십시오 (http://stackoverflow.com/questions/6835766/c-delegate-cannot-be-declared-static/6835948#6835948) –