2010-04-23 7 views
1

조건이 true이면 하나의 파일을 컴파일하고 조건이 false이면 다른 파일을 컴파일하는 것과 같은 조건을 C#에서 설정할 수 있습니까? C#에서 #include (조건부 컴파일)

#ifdef DEBUG 
#include Class1.cs 
#else 
#include Class2.cs 
#endif 

같은

또는 가능성이 프로젝트 속성에서 설정의

정렬.

+0

가 왜 이렇게해야합니까? – RCIX

답변

6

아니요, 아닙니다.

그러나 두 파일 전체를 #if 개의 블록으로 묶을 수 있습니다.

[Conditional] attribute을보고 싶을 수도 있습니다.

+2

또한 부분 클래스와 부분 메소드가 이와 같은 경우에 매우 유용 할 수 있음을 잊지 마십시오. –

0

고맙게도 아니, 그런 전처리 기가 아닙니다. 그러나 파일 자체 내에서 전체 파일 구현을 제외 할 수 있습니다. 또는 MSBuild 또는 nAnt로 빌드 프로세스를 설정하여 파일을 전환 할 수 있습니다.

2

나는 그것을 추천하지 않는다. 차이점을 이해하기 위해 완전히 별개의 파일 두 개가 있어야하는 격렬한 코드가있는 Debug and Release 아이디어는 마음에 들지 않습니다. 모든에서 #if DEBUG는 ... 그러나

IMO 꽤 큰 코드 냄새 당신 다음과 같이 그것을 할 수 :

// Class1.cs 
#if DEBUG 

... 

#endif 

.

// Class2.cs 
#if !DEBUG 

... 

#endif 
1

C#에서는 파일 포함을 사용하지 않지만 조건부 방법을 사용할 수 있습니다.

예를 들어 게임을 개발할 때 입력 클래스에 공유 코드 기반을 사용하고 있지만 Xbox의 경우 하나의 메서드가 호출되기를 원합니다. 다른 메서드는 if 나는 Zune에있다. 여전히 동일한 클래스의 입력 데이터를 반환 할 것이지만이를 얻으려면 매우 다른 경로가 필요합니다.

현재 조건 방법에 대한 자세한 내용을 보려면 : http://msdn.microsoft.com/en-us/library/aa288458(v=VS.71).aspx