2010-07-04 3 views
0

실시간 오버레이 방식을 사용해야하는 경우에는 몇 가지 링크를 제안하십시오.실시간 프로젝트에서 메소드 오버로딩을 언제 사용해야합니까?

+1

@Closers, 나는 중복을 찾을 수 없습니다. 그리고 그것은 진짜 질문입니다. –

+3

"실시간"이라고 말하면 아래에서 언급 한 Henk이 "실제 생활"을 암시하고 있습니까? 아니면 성능이 중요한 실시간 소프트웨어 응용 프로그램에서 작업하고 있습니까? 저는 헨크가 정확하다고 생각합니다. 그러나 질문을 혼란스럽게 할 수 있다면 대답이 더 적절할 수 있고 물론 유사한 질문을하는 다른 사람들에게 도움이 될 수 있습니다. –

+1

@Henk '실시간'이라는 용어가 포함되어있어 '물어 보는 것을 말하는 것이 어렵다'는 이유로 '@Henk'이 닫힙니다. 실시간 프로그래밍에 대한 답변을 이미 얻었으므로 해당 분야에서 질문을 이해할 수 없습니다 . '실시간'을 부적절하게 사용하지 않고 질문을 다시하는 것이 좋습니다. –

답변

0

여러 가지 방법이 동일한 용도이지만 두 가지 이상의 방법으로 시작하는 경우 오버로드가 사용됩니다 (권장).

그래서 우리는 오히려

int Add(int a, int b) { ...} 
int Add(int a, int b, int c) { ... } 

보다

int Add2(int a, int b) { ...} 
int Add3(int a, int b, int c) { ... } 

또는

int Add(int a, int b, int? c) { ...} 

마지막 예는 또한 사용하여 수행 할 수 있습니다 (C# 4) 선택적 매개 변수.

과부하에 대한 또 다른 좋은 후보 :

void ReadXml(string fileName) { ... } 
void ReadXml(Stream strm) { .... } 
2

메서드 오버로드는 클래스 디자인에 사용되는 OOP 기술입니다. 실시간 개발과는 아무런 관련이 없습니다.

실제 오버로드 방법에 대해 묻는다면 유용한 기법이므로 BCL 전체에서 사용되는 것을 볼 수 있습니다.

예는 Linq 확장 메소드 중 일부입니다. 확장 메소드 중 많은 메소드가 다중 오버로드를 가지고 있습니다 (IEnumerable<T> 참조).

메서드 오버로드는 매개 변수에 따라 여러 가지 방법으로 동일한 작업을 수행 할 수있는 경우에 사용하는 것이 가장 좋습니다 (예 : 정렬). 매개 변수가없는 오버로드는 기본 정렬을 적용 할 수 있습니다. 정렬 순서가있는 오버로드는 정렬 순서를 허용하고 다른 하나는 정렬 알고리즘을 결정하는 Func 대리자를 가질 수 있습니다.

+0

약간의 유연성을 가지고, 나는 이것을 "실제 생활"프로젝트로 읽었습니다. –

+1

@Henk Holterman - 공정한 ... 나는 "실시간"을보고 즉시 RT 프로그래밍에 대해 생각해 보았습니다. – Oded

0

이제는 C#에서 이니셜 라이저와 명명 된 매개 변수와 같은 것들이 필요하지는 않습니다.

+0

한 가지 덧글 한 가지 덧붙여 말하지만, 공용 API를 만들고 실제로 어떻게 사용되었는지 잠그고 싶다면 이것이 더 유용 할 것이라고 생각합니다. – spinon

0

일부 공용 API를 작성하는 경우 메소드 오버로드가 유용 할 수있는 시나리오가 있습니다. 예를 들어, ASP.NET MVC는 HTML 헬퍼를 통해 기능을 제공하기 위해이 메서드를 사용합니다.이 메서드는 서로 다른 인수로 여러 번 오버로드됩니다.

관련 문제