2014-06-23 2 views
1

저는 이와 같이 대표자를 씁니다.코드를 엉망으로 만들지 않고 대표자를 작성하십시오.

delegate void MyMethod(string arg1, string arg2); 
    MyMethod mm; 

단일 대리인을 선언하는 데 왜 두 줄이 필요한지 알 수 없습니다. 수업에 20 명의 대표가 있다면 40 줄의 코드를 작성해야합니다. 누구나 코드 한 줄로이 코드를 작성할 수 있습니까? 미리 감사드립니다.

+3

당신이 만약 .NET Framework 3.5 이상을 사용하면 [Func ] (http://msdn.microsoft.com/en-us/library/bb549151(v=90?hl=ko) .aspx) 및 [Avtion ] (http : 매번 새 대리자 형식을 선언하는 대신 //msdn.microsoft.com/en-us/library/018hxwa8(v=vs.110).aspx) 대리자를 참조하십시오. – Yuriy

+0

Func과 Delegate간에 성능 차이가 있습니까? –

+0

이 - [C# 일반 대 비 일반 성능] (http://stackoverflow.com/questions/17307326/c-sharp-generic-vs-not-generic-performance), 도움이됩니다. – Yuriy

답변

10

현재 매우 다른 두 가지를 선언하고 있습니다 :

  • 첫 번째 줄 두 번째 줄은 그 대리자 형식
필드를 선언 MyMethod
  • 라는 대리자 유형 선언

    차이점을 이해하는 것이 중요합니다. 왜냐하면 새로운 대리자 유형을 실제로 선언하고 싶을 때와 u 그냥 기존 대리자 형식의 필드를 선언하고 싶습니다. 클래스에 20 개의 델리게이트 필드가 있다면, 각각의 델리게이트 필드에 새로운 타입을 선언하고 싶지는 않을 것입니다. 그들이 동일한 서명을 가지고 있다면, 당신은 하나의 타입을 사용할 수 있습니다 ... 또는 더 나은 것, 단지 Action<...> 또는 Func<...>과 같은 프레임 워크 타입 중 하나를 사용하십시오.

    Action<string, string> mm; 
    

    (void 반환 형식에 대한 Action 대표, 및 비 void 반환 형식에 대한 Func 대표 모두가 일반적으로 표현했다. 자세한 내용은 MSDN 봐, 매개 변수의 서로 다른 숫자가 있습니다.)

  • +1

    튜플과 같은 유형은 어떻게됩니까? 나는 보통 프로토 타이핑 중에 만 사용되지만 생산에 들어가기 전에 클래스에 싸여 야한다고 들었다. – Falgantil

    +0

    대리인과 Func간에 성능 차이가 있습니까? –

    +0

    @YesudassMoses Func는 대리자입니다. 'Func '은 'Delegate T2 Func (T1 t)'처럼 정의됩니다. – Atomosk

    관련 문제