[SerializableAttribute]
public delegate void EventHandler<TEventArgs>
(
object sender,
TEventArgs e
)
왜 마이크로 소프트 사람이 바로 보낸 매개 변수와 같은 "E"매개 변수에 대한 개체 유형을 포기하지 않았다? 여기서 중요한 일을 놓친 거니?
[SerializableAttribute]
public delegate void EventHandler<TEventArgs>
(
object sender,
TEventArgs e
)
왜 마이크로 소프트 사람이 바로 보낸 매개 변수와 같은 "E"매개 변수에 대한 개체 유형을 포기하지 않았다? 여기서 중요한 일을 놓친 거니?
만약 그렇게했다면 사람들은 항상 args
매개 변수를 사용해야합니다.
public delegate void SomeInterestingEventHandler(
object sender, SomeInterestingEventArgs args);
당신이 것 인 :이 선언의 필요성을 대체하는 편리한 방법입니다
obj.SomeEvent += (sender, args) => Console.WriteLine(args.SomeSpecificProperty);
:
public event EventHandler<SomeInterestingEventArgs> SomeEvent;
과 : 요점은 당신이 같은 일을 할 수 있다는 것입니다 이것없이해야합니다.
그게 내가 생각하기도하지만, 발신자에게도 일반적인 이유가 아닌가? –
@ Mu'menTayyem 하단에 추가 사항을보고 귀하의 질문에 대한 내 의견 –
알겠습니다. 고마워, 친구. –
고유 한 이벤트 args 클래스를 만들 수 있습니다. 여기에는 몇 가지 유용한 속성이 있습니다. 마우스 클릭 이벤트 args (적절한 이름을 기억할 수 없음)와 마찬가지로 클릭 한 포인트를 알려주는 X 및 Y 소품이 있습니다. 제네릭 덕분에 여러분은 평범한 오래된 물체를 가지고 던지기를 할 필요가 없습니다. 당신은
MyEventHandler<MouseClickedEventArgs>(object sender, MouseClickedEventArgs e).
이있을 것이다 그리고 모든 것을 강하게
Yes (예)를 입력하지만, 왜이 보낸 사람을 위해 또한 일반적인를 포기하지 않았다? –
@ Mu'menTayyem 왜냐하면 발신자가 솔직히 훨씬 덜 재미 있기 때문입니다. (때로는 간단히 'null'입니다.) * * 대부분의 시간 * 사람 *은 이미 * 발신자가 누구인지를 알고 있습니다. 때로는 "어떤 버튼"을 확인해야하지만 유형을 알지도 못하면 참조 확인으로 할 수 있습니다. * 다른 사람들은 이벤트 전달을 사용합니다. 레벨간에 서명이 바뀌면 수행하기가 쉽지 않습니다. –