2010-01-15 2 views
24
private enum E_Week 
{ 
    Mon = 0, 
    Tue, 
    . . . 
} 

다음 코드는 무엇을 의미합니까?물음표가있는 이상한 C# 구문

E_Week? week= null; 

다음 코드와 동일합니까? '?'의 기능은 무엇입니까? 여기서 서명 해?

E_Week week= null; 
+3

[DateTime은 무엇이 될 수 있습니까?] C에서 의미가?]?] (http://stackoverflow.com/questions/109859/what-does-datetime-mean-in-c) –

답변

29

코드에서 nullable type을 사용하고 있습니다. 열거 형은 int 또는 DateTime과 마찬가지로 "값 유형"으로 알려져 있으며 항상 가치가 있어야합니다. Nullable 유형을 사용하면 값 유형이 Null 값을 허용하는 것처럼 처리 할 수 ​​있습니다. 예를 들어

,이 코드가 잘못하고 열거가 null이 될 수 없기 때문에 컴파일되지 않습니다 :

E_Week week = null; 

하지만이 코드는 유효합니다

E_Week? week = null; 

그리고이 정확히 동일합니다 :

Nullable<E_Week> week = null; 
16

E_Week?Nullable 유형에 대한 자세한 내용은 here를 참조 Nullable<E_Week>

에 해당합니다.

5

가장 중요한 차이점은 두 번째 문이 작동하지 않는다는 것입니다. 기호는 기본적으로 값 유형 (이 경우 enum)을 null로 설정할 수있는 가능성을 제공합니다. 일반적으로 불가능합니다.

관련 문제