자신의 이벤트를 정의 할 때마다 다음과 같은 패턴을 사용합니다 (MSDN에서 권장하는 방식은 믿습니다 수행) :

public class MyEventClass { private bool _value; // Backing variable public bool Value { get { return _value; } set { if (value != _value) // Only raise event if value is changed/different { _value = value; OnValueChanged(EventArgs.Empty); } } } public event EventHandler ValueChanged; // Anything can subscribe to the event protected void OnValueChanged(EventArgs e) // Only this and children can invoke event { if (ValueChanged != null) ValueChanged(this, e); } } 

따라서 클라이언트 코드는 이벤트를 구독하기 만하면 자동으로 작동합니다.

하지만 특히 EventHandler를 사용하여 이벤트를 발생시키는 클래스에서 EventArgs e 매개 변수를 전달하는 것이 번거 롭습니다. 기본 EventArgs에는 데이터가없고 .

이것을 변경하는 것이 가짜로 간주됩니까?

protected void OnValueChanged() { if (ValueChanged != null) ValueChanged(this, EventArgs.Empty); } 

댓글

  • 그 자리에 있으면 어떤 것이 아프나요? 나중에 이벤트 인수를 전달할 필요가있을 때 다시 추가해야합니까? 아마도 …
  • 수업을 작성하는 동안 약간의 노력을 절약 할 수있는 편의라고 생각했습니다. 하지만 ' 나중에 변경할 수 있다는 점에서 ' 절대적으로 옳습니다 (아마도 ' 이길 수 있지만 …), 그리고 그것은 획기적인 변화가 될 것입니다. 그래서 나는 처음에 그것을 올바르게하는 것이 좋을 것입니다. 감사합니다!
  • 이 특별한 경우에는 ' PropertyChangedEventArgs

    , 인수로 속성 이름을 전달 하시겠습니까? 아니면 나쁜 예일까요?

  • 내 코드는 나쁜 예일 수 있지만 기본 EventArgs 및 -Changed 명명법을 사용하는 몇 가지 .NET 클래스에서 설계 및 명명 규칙을 가져 왔습니다.

답변

틀렸나 요? 아니요. 사람들이 코드에 대해 불평하게 만들까요? 아니요.

매개 변수가 무엇인지, 그리고 문제 해결에 도움이 될지 알아 내려고하는 동안 바쁜 개발자를 몇 분 동안 잊게 될까요? 아마도 ..

수업을 더 쉽게 사용할 수 있을까요 …?

표준과 패턴은 쉽게 인식되고 사용 (또는 무시)되기 때문에 유용합니다. 관례에서 벗어나는 것은 당신이 할 수 있기 때문이 아니라 목적을 위해 이루어져야합니다. 이는 대괄호 스타일, 매개 변수 이름 또는 인수 목록에 적용됩니다. 컴파일이 아니라 이유가 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다