2013-09-28 3 views
1

매개 변수를 대리인에게 전달하는 가장 좋은 방법은 무엇입니까? 내가 가장 많이 사용되는 산업 받아 들여 그것을하는 방법을 알고 싶습니다 그래서 나는 다음과 같은 방법으로 모두 혜택을 볼 수대리자 매개 변수를 전달하는 가장 좋은 방법


1) 그냥되는 각 매개 변수를 개별적으로 전달하는 매개 변수를, 매개 변수

예 위임

public delegate void MyDelegate(bool PARAM1, String PARAM2, int PARAM3); 



2) 구조체를 통해 전달하는 매개 변수 및 대리인의 유일한 변수는 구조체이다.

예 구조체

public struct MyDelegateArgs 
{ 
    public bool PARAM1; 
    public String PARAM2; 
    public int PARAM3; 
} 

예 위임

public delegate void MyDelegate(MyDelegateArgs args); 
+0

첫 번째 접근 방식의 이점은 무엇이라고 생각합니까? – BrokenGlass

+0

코드가 적어짐에 따라 주요 이점을 볼 수 있지만 코드가 어딘가에있는 이점 (별도 파일의 구조체에 있음)을 볼 수 있습니다. –

+2

매개 변수의 구조체를 사용하는 것의 유일한 이점은 전달할 매개 변수가 많거나 동일한 매개 변수를 가진 다른 대리자를 사용하는 경우입니다. –

답변

2

당신의 구조체 (20 개) 속성/필드했다 상상 - 당신이 정말로 매개 변수로 사람의 전부를 통과하고 싶은 것? 일반적으로 나는이 복잡성을 모두 숨기고 클래스/구조체 대신에 코드 DRY을 유지하도록 주장 할 것입니다. 대부분의 경우이 표현식이 더욱 표현 적이기 때문에 대리자는 MyDelegateArgs 유형의 매개 변수가 필요합니다.

개별 값을 전달하기위한 유일한 인수는 단지 MyDelegateArgs에서 사용되는 작은 하위 집합 만 필요하지만 그렇지 않은 경우에만 필요합니다. 당신이 확장 갈 때 서명이 미리 정의 된 Action 또는 Predicate 정의 너무 커질 경우 걸려 넘어에서 당신을 유지하는 것입니다 귀하의 대리인이 구조체 인수가 바람직하다 사용하여, Action<T> 또는 Predicate<T> 같은 유틸리티가있는 경우

1

대의원의 서명.

관련 문제