>백엔드 개발 >C++ >C#에서 이벤트 처리기에 추가 매개변수를 전달하려면 어떻게 해야 합니까?

C#에서 이벤트 처리기에 추가 매개변수를 전달하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-23 08:31:10441검색

How Can I Pass Extra Parameters to an Event Handler in C#?

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>

someDataevHandler 내에 필요하지만 표준 이벤트 메커니즘에서는 이를 직접 포함할 수 없습니다.

람다 표현 솔루션

해결책은 이벤트 핸들러를 할당할 때 람다 표현식을 사용하는 것입니다.

<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을 호출하여 sendersomeData을 모두 전달합니다. 이를 통해 이벤트 핸들러에 추가 매개변수를 효과적으로 삽입할 수 있습니다. 이 접근 방식은 이벤트 처리 로직에 전달되는 데이터에 대한 향상된 유연성과 제어 기능을 제공합니다.

위 내용은 C#에서 이벤트 처리기에 추가 매개변수를 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.