C# 이벤트 핸들러에 추가 데이터 전달
이벤트 핸들러는 C#에서 이벤트에 응답하는 데 매우 중요합니다. 그러나 표준 이벤트 핸들러 서명은 sender
개체만 제공하는 경우가 많습니다. 이로 인해 추가 컨텍스트를 전달하는 기능이 제한됩니다. 해결책을 살펴보겠습니다.
다음 시나리오를 고려해보세요.
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); // Only sender is passed } public void evHandler(Object sender) { // someData is inaccessible here }</code>
someData
은 evHandler
내에 필요하지만 표준 이벤트 메커니즘에서는 이를 직접 포함할 수 없습니다.
람다 표현 솔루션
해결책은 이벤트 핸들러를 할당할 때 람다 표현식을 사용하는 것입니다.
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); // Lambda expression to pass additional data } public void evHandler(Object sender, string someData) { // Now someData is accessible! }</code>
람다 식 (sender) => evHandler(sender, someData)
은 익명 메서드를 만듭니다. 이 메서드는 이벤트에서 sender
개체를 받은 다음 evHandler
을 호출하여 sender
과 someData
을 모두 전달합니다. 이를 통해 이벤트 핸들러에 추가 매개변수를 효과적으로 삽입할 수 있습니다. 이 접근 방식은 이벤트 처리 로직에 전달되는 데이터에 대한 향상된 유연성과 제어 기능을 제공합니다.
위 내용은 C#에서 이벤트 처리기에 추가 매개변수를 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!