문제

말하는 내가 있는 클래스라는 개구리처럼,그것은 보인:

public class Frog
{
     public int Location { get; set; }
     public int JumpCount { get; set; }


     public void OnJump()
     {
         JumpCount++;
     }

}

도움이 필요 2 개의 것:

  1. 나는 원하는 이벤트를 만들라는 점프 클래스에서 정의합니다.
  2. 내가 원하는 인스턴스를 만드는 개구리의 클래스를 만들 또 다른 방법이 될 것이다라는 개구리 이동합니다.
도움이 되었습니까?

해결책

public event EventHandler Jump;
public void OnJump()
{
    EventHandler handler = Jump;
    if (null != handler) handler(this, EventArgs.Empty);
}

다음

Frog frog = new Frog();
frog.Jump += new EventHandler(yourMethod);

private void yourMethod(object s, EventArgs e)
{
     Console.WriteLine("Frog has Jumped!");
}

다른 팁

@CQ:왜 당신은 로컬 복사본을 만들 pf Jump?또한,당신은 당신을 저장할 수 있습 후속 테스에 의해 약간 변화의 선언 이벤트:

public event EventHandler Jump = delegate { };

public void OnJump()
{
    Jump(this, EventArgs.Empty);
}

여기에 샘플을 사용하는 방법에 정상적인 EventHandler,또는 사용자 정의할 수 있습니다.Note ?. 는 대신 사용 . 하는 것을 보장하는 경우 이벤트가 null,실패 깨끗하게(null 을 반환)

public delegate void MyAwesomeEventHandler(int rawr);
public event MyAwesomeEventHandler AwesomeJump;

public event EventHandler Jump;

public void OnJump()
{
    AwesomeJump?.Invoke(42);
    Jump?.Invoke(this, EventArgs.Empty);
}

참고하는 이벤트 자체뿐 null 없는 경우에는 구내구독자,그리고는 한 번 호출하는 이벤트는 스레드에 안전합니다.그래서 할당할 수도 있습니다 기본 빈 처리를 확실히 이벤트지 않은 null 입니다.참고로 이것은 기술적으로 취약한 다른 사람에게 닦아 모든 이벤트를 사용하여(GetInvocationList),도록 주의해서 사용합니다.

public event EventHandler Jump = delegate { };

public void OnJump()
{
    Jump(this, EventArgs.Empty);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top