백엔드 개발 C#.Net 튜토리얼 C# 대리자, 익명 메서드, Lambda, 일반 대리자, 표현식 트리 코드 예제를 검토해 보세요.

C# 대리자, 익명 메서드, Lambda, 일반 대리자, 표현식 트리 코드 예제를 검토해 보세요.

Mar 09, 2017 pm 03:32 PM

C# 대리자, 익명 메서드, Lambda, 일반 대리자, 식 트리 코드 예제를 검토해 보세요.

이러한 내용은 이전 세대 프로그래머를 위한 진부한 표현일 뿐 전혀 새로운 것이 아닙니다. 새로운 세대의 프로그래머를 위한 것입니다. 과거에는 많은 신세대가 위임 및 표현 트리와 같은 응용 프로그램을 마스터하기 위해 오랜 연구, 이해 및 연습 과정을 거쳐야 했습니다. 오늘은 누구나 5분 안에 이 블로그를 읽을 수 있도록 간단하게 설명하려고 합니다.

첫 번째 순간: 위임

일부 교과서와 블로그에서는 위임에 관해 이야기할 때 이벤트를 언급합니다. 이벤트는 위임의 한 예이지만, 이해를 돕기 위해 오늘은 이벤트가 아닌 위임에 대해서만 이야기하겠습니다. 먼저 코드 조각:

아래 코드는 위임된 애플리케이션의 데모를 완료합니다. 커미션은 세 단계로 구성됩니다:

아아아아

01단계: 먼저 대리자를 사용하여 대리자를 정의합니다.

Step02: 위임자에 해당하는 메서드를 선언합니다.

03단계: 이 메서드를 사용하여 이 대리자를 인스턴스화합니다.

이 시점에서 대리인이 완료되어야 하며 대리인을 호출할 수 있습니다.

2분: 익명 방식

막판에도 이미 알고 계시겠지만, 의뢰 신청서를 작성하려면 세 단계를 거쳐야 합니다. 한 단계도 놓치지 않고 할 수는 없습니다. 큰 발걸음을 내디디면 조심하세요. 계란을 다치게 하세요. 하지만 마이크로소프트는 끈을 당기는 것을 두려워하지 않고 세 단계를 두 단계로 전환할 것을 고집합니다! 따라서 Microsoft는 위의 세 단계를 단순화하기 위해 익명 방법을 사용합니다. 익명 메서드에 대해 어떻게 생각하시나요? C#에서는 전혀 필요하지 않습니다. 어떤 사람들은 이를 구문 설탕이라고 독창적으로 명명했습니다.

아아아아

01단계: 먼저 위임을 사용하여 위임을 정의합니다.

02단계: 이 쓰기 방법을 사용하여 대리자에게 메서드를 할당합니다. 실제로 이 쓰기 방법은 익명 메서드입니다.

이때, 이것이 두 걸음 앞의 세 걸음이 아니라는 사실에 놀라시겠죠?

3분: 람다 표현식

원래 간단한 프로그램에 몇 가지 위임 키워드를 추가하면 코드가 갑자기 심오해지며 심오한 내용을 이해하는 사람이 적어지므로 이는 급여 인상을 위한 협상 카드로도 사용될 수 있습니다. 그러나 C#에 대한 Microsoft의 디자인 철학은 단순성과 사용 편의성입니다. Microsoft는 익명 메서드 대리자(int x, int y) { return x + y }를 단순화하기 위해 모든 수단을 시도했고 Lambda가 나타났습니다. 람다 표현식을 작성하는 여러 가지 방법을 살펴보겠습니다.

아아아아

방법 1: 대리자를 제거하고 ()와 {} 사이에 "=>"를 추가하기만 하면 됩니다.

방법 2: 방법 1에 따라 모든 매개변수 유형이 제거됩니다.

방법 3: 이를 수행하려면 더 철저하게 수행하고 {} 및 반환 키워드를 제거하세요.

이런 방법은 아무거나 써도 되지만 초보자에게는 귀찮을 뿐입니다. 가끔은 이런 글쓰기 방식도 보이고, 가끔은 저 글쓰기 방식도 보여서 사람들을 매료시킵니다. 만약 아무도 지도해 주지 않는다면 정말 혼란스러울 것입니다. 그리고 어렵다.

4분: 일반 대의원

.net 버전은 업그레이드되지 않기 때문에 새 버전은 이전 버전과 달라야 합니다. 그렇지 않으면 Microsoft 엔지니어가 어떻게 상사에게 보고할 수 있습니까? 그래서 Microsoft는 다시 새로운 것을 준비하고 있습니다.

아아아아

익명 메서드든 Lambda 식이든 대리자 적용을 완료하는 데는 두 단계가 있습니다. 하나는 대리자를 정의하는 것이고, 다른 하나는 메서드를 사용하여 대리자를 인스턴스화하는 것입니다. Microsoft는 이 두 단계를 하나의 단계로 결합했습니다. Func를 사용하여 대리자 정의를 단순화합니다.

이 시점에서 대리자의 적용은 Func cAdd3 = (x, y) => 여기서 Func는 소위 일반 대리자입니다.

5분: 표현식 트리

사실 표현식 트리는 위임과 아무 관련이 없습니다. 꼭 관련되어야 한다면 표현식 트리는 위임을 저장하는 컨테이너라고 가정하겠습니다. 좀 더 전문적으로 얘기하자면 표현식 트리는 람다 표현식에 접근하기 위한 데이터 구조다. Lambda 표현식을 사용할 때는 표현식에서 직접 가져오고 Compile()을 직접 사용하세요. 다음 코드:

public partial class WebForm3 : System.Web.UI.Page
{
    //step01:首先用delegate定义一个委托 。
    public delegate int CalculatorAdd(int x, int y);

    protected void Page_Load(object sender, EventArgs e)
    {
        //step03:用这个方法来实例化这个委托。
        CalculatorAdd cAdd = new CalculatorAdd(Add);
        //int result = cAdd(5, 6);
        int result = cAdd.Invoke(5,6);
    }
    // step02:声明一个方法来对应委托。
    public int Add(int x, int y)
    {
        return x + y;
    }
}
로그인 후 복사

아주 피상적으로만 다루긴 했지만 적어도 모든 사람이 대리자, 익명 메서드, Lambda, 일반 대리자 및 표현식 트리에 대한 다른 기사를 검토할 수 있게 해주었습니다.


위 내용은 C# 대리자, 익명 메서드, Lambda, 일반 대리자, 표현식 트리 코드 예제를 검토해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

람다 표현식은 C++에서 예외를 어떻게 처리하나요? 람다 표현식은 C++에서 예외를 어떻게 처리하나요? Apr 17, 2024 pm 12:42 PM

C++에는 Lambda 표현식을 사용하여 예외를 처리하는 두 가지 방법이 있습니다. 즉, try-catch 블록을 사용하여 예외를 포착하고, catch 블록에서 예외를 처리하거나 다시 발생시킵니다. std::function 유형의 래퍼 함수를 ​​사용하면 try_emplace 메서드가 Lambda 표현식에서 예외를 포착할 수 있습니다.

C++ 람다 표현식에서 클로저의 의미는 무엇입니까? C++ 람다 표현식에서 클로저의 의미는 무엇입니까? Apr 17, 2024 pm 06:15 PM

C++에서 클로저는 외부 변수에 액세스할 수 있는 람다 식입니다. 클로저를 생성하려면 람다 표현식에서 외부 변수를 캡처하세요. 클로저는 재사용성, 정보 숨기기, 지연 평가와 같은 이점을 제공합니다. 이는 클로저가 외부 변수가 파괴되더라도 여전히 접근할 수 있는 이벤트 핸들러와 같은 실제 상황에서 유용합니다.

다중 스레드 프로그래밍에 C++ 람다 식을 사용하면 어떤 이점이 있나요? 다중 스레드 프로그래밍에 C++ 람다 식을 사용하면 어떤 이점이 있나요? Apr 17, 2024 pm 05:24 PM

C++ 다중 스레드 프로그래밍에서 람다 식의 장점에는 단순성, 유연성, 매개 변수 전달 용이성 및 병렬성이 포함됩니다. 실제 사례: 람다 식을 사용하여 다중 스레드를 만들고 다른 스레드에서 스레드 ID를 인쇄하여 이 방법의 단순성과 사용 용이성을 보여줍니다.

C++ 람다 표현식에서 클로저를 구현하는 방법은 무엇입니까? C++ 람다 표현식에서 클로저를 구현하는 방법은 무엇입니까? Jun 01, 2024 pm 05:50 PM

C++ Lambda 표현식은 함수 범위 변수를 저장하고 함수에 액세스할 수 있도록 하는 클로저를 지원합니다. 구문은 [캡처 목록](매개변수)->return-type{function-body}입니다. 캡처 목록은 캡처할 변수를 정의합니다. [=]를 사용하여 모든 지역 변수를 값으로 캡처하고, [&]를 사용하여 모든 지역 변수를 참조로 캡처하거나, [변수1, 변수2,...]를 사용하여 특정 변수를 캡처할 수 있습니다. 람다 표현식은 캡처된 변수에만 액세스할 수 있지만 원래 값을 수정할 수는 없습니다.

C++ 람다 표현식은 외부 변수를 어떻게 캡처합니까? C++ 람다 표현식은 외부 변수를 어떻게 캡처합니까? Apr 17, 2024 pm 04:39 PM

C++에서 외부 변수의 람다 식을 캡처하는 방법에는 세 가지가 있습니다. 값으로 캡처: 변수의 복사본을 만듭니다. 참조로 캡처: 변수 참조를 가져옵니다. 값 및 참조로 동시에 캡처: 값 또는 참조로 여러 변수를 캡처할 수 있습니다.

C++ 함수 호출 람다 표현식: 매개변수 전달 및 반환 값에 대한 콜백 최적화 C++ 함수 호출 람다 표현식: 매개변수 전달 및 반환 값에 대한 콜백 최적화 May 03, 2024 pm 12:12 PM

C++에서는 Lambda 표현식을 함수 매개 변수로 사용하여 콜백 함수의 유연성을 얻을 수 있습니다. 구체적으로 설명하면 다음과 같습니다. 매개변수 전달: std::function을 통해 Lambda 표현식을 래핑하고 이를 함수 포인터 형식으로 함수에 전달합니다. 반환 값 처리: std::function을 사용하여 콜백 함수 포인터를 선언할 때 반환 값 유형을 지정합니다. 실제 사례: GUI 이벤트 처리에서 콜백을 최적화하고, 불필요한 객체나 함수 포인터 생성을 방지하고, 코드 단순성과 유지 관리성을 향상시킵니다.

C++ 람다 표현식을 사용하여 지연 평가를 수행하는 방법은 무엇입니까? C++ 람다 표현식을 사용하여 지연 평가를 수행하는 방법은 무엇입니까? Apr 17, 2024 pm 12:36 PM

C++ 람다 표현식을 사용하여 지연 평가를 수행하는 방법은 무엇입니까? 지연 평가 함수 개체를 만들려면 람다 식을 사용하세요. 지연된 계산은 필요할 때까지 실행을 연기합니다. 필요한 경우에만 결과를 계산하여 성능을 향상시킵니다.

C++ 람다 표현식의 성능 최적화 기술은 무엇입니까? C++ 람다 표현식의 성능 최적화 기술은 무엇입니까? Apr 17, 2024 pm 05:45 PM

C++ 람다 표현식 최적화를 위한 성능 팁은 다음과 같습니다. 불필요한 람다 객체 생성 방지 std::bind를 통해 가장 작은 객체를 명시적으로 캡처 std::move를 사용하여 캡처된 변수를 이동하여 복사 방지 람다 본문을 최적화하여 불필요한 메모리 할당, 반복 계산 및 전역 변수 액세스

See all articles