2017-02-18 12 views
-1

함수 내에서 C#의 프로그램 흐름을 조작 할 수있는 방법이 있습니까? 나는 C에서 의미C# 함수에 "Return"을 넣으시겠습니까?

이 매크로과 장소에

#define Verify(x) if(x==null) return; 

또는

#define Verify(x) if(x==null) goto _exit; 

같은 것을 배치 할 수 있었다 ++ 확인 (x)는 어디 함수에. 이 예제에서 어떤 조건이 충족되면 매크로는 함수를 종료 할 수 있습니다. 그러나 C#으로, 당신은 함수로 검증을 배치 할 수 있습니다, 함수가 인라인,하지만 당신은 항상

if (Verify(x)) return; 

의 형태로 뭔가를 작성해야 할 수도 있습니다. 그래서 문제는 호출 함수의 제어 흐름을 호출 된 함수로 조작하기 위해 예외 외에도 어떤 방법이 있을까요?

+5

을 당신은 우리가 보호 조항이 필요합니까이 문서에서이를 구현하는 방법에 이유에 대한 자세한 설명을 찾을 수 있습니다 매크로 또는 다른 방법으로 제어 흐름 문을 볼 수 있습니다. 하지 마. 예외는 갈 길입니다. –

+0

그러나 예외는 많은 오버 헤드가 있습니다. –

+2

오버 헤드 란 무엇입니까? 예외는 흐름을 제어하는 ​​데 사용되는 것이 아니라 기능을 실행할 방법이없는 오류 조건을 나타 내기 위해 사용됩니다. 실행을 다른 곳으로 옮기려면 예외를 던지지 마십시오. –

답변

3

유효하지 않은 조건으로부터 보호하는 일반적인 방법은 방법 본문의 시작 부분에 보호 절을 설치하는 것입니다. Why do We Need Guard Clauses?

나는 또한 방어 코딩에 웹 세미나를 개최하고 여기에 기록 된 세션을 찾을 수 있습니다 : 나는 심각하게 싫어하는 Advanced Defensive Coding Techniques