문제
말하는 내가 있는 클래스라는 개구리처럼,그것은 보인:
public class Frog
{
public int Location { get; set; }
public int JumpCount { get; set; }
public void OnJump()
{
JumpCount++;
}
}
도움이 필요 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);
}
제휴하지 않습니다 StackOverflow