2010-05-14 2 views
9

누군가가 나에게 목록을 주거나 nullable 형식이 될 수있는 C# 데이터 형식 목록을 어디서 찾을 수 있습니까? 예를 들어nullable 형식으로 사용할 수있는 C# 데이터 형식은 무엇입니까?

:

  • 나는 Nullable<int> 내가 Nullable<byte[]>이 아닌 것을 알고
  • 괜찮다는 것을 알고있다.

어떤 유형이 null 가능하고 어떤 유형이 아닌지 알고 싶습니다. BTW, 나는 이것을 런타임에 테스트 할 수 있음을 안다. 그러나 이것은 우리가 작성중인 코드 생성기 용이므로 실제 유형이 없습니다. 열이 string 또는 int32 (등) 인 것으로 알고 있습니다.

+1

' Null 허용'확인되지 않습니다. 이것은'byte [] b = null'을 할 수 있다는 것을 의미합니다. – fearofawhackplanet

답변

20

모든 값 유형 (Nullable<T> 제외)은 nullable 유형, 즉 System.ValueType에서 파생 된 모든 유형 (즉, enum 초! 포함)에서 사용할 수 있습니다. 사람들은 본질적으로되어 이미 Null 허용,

struct Nullable<T> where T : struct, new() { … } 
+3

@OP : ... 요점은 nullable이 아닌 값 유형을 사용하여 문제를 해결하는 것입니다. (주요 설계 결함이라고 말하고 다른 것은 동의하지 않습니다). (http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx) 그들은 'Nullable'호출하여 문제를 확실히 도우지 않았다!귀하의 질문과 정확히 같은 것들 때문에 "어떤 유형이 nullable입니까?" 답변 : 참조 유형은 null입니다. 값 유형은 'Nullable'과 호환되며 반대입니다. * 한숨 * ;-) –

+2

@ TJCrowder : 나는 하나에 동의하지 않을 것이다 ... –

+4

사소한 암말 : Nullable 유형 자체를 제외한 모든 값 유형 *. 즉, 다음은 유효하지 않습니다. var i = new Nullable >(); –

1

그것은 구조체를 포함한 모든 값 유형이,이 참조 형식이 될 수 없습니다 될 수 있습니다

그 이유는 Nullable 이런 식으로 뭔가를 선언한다는 것입니다.

예 : INT32 더블 날짜 시간 등 CustomStruct

번호 : 자세한 내용은 문자열 배열 에서는 CustomClass 등

, MSDN을 참조하십시오 http://msdn.microsoft.com/en-us/library/2cf62fcy(v=VS.80).aspx

+0

"구조체를 포함하여 모든 값 형식이 될 수 있습니다."- Nullable '인 50 %의 구조체를 제외하고는, p –

2

유형을 값을 할당 할 수 있거나 null을 할당 할 수 있으면 nullable이라고합니다. 유형이 아무런 가치가 없다는 것을 의미합니다. 결과적으로, null 입력 가능 유형은 값을 표현하거나 값이 존재하지 않습니다. 예를 들어 String과 같은 참조 유형은 nullable이며 Int32와 같은 값 유형은 그렇지 않습니다. 값 유형은 해당 유형에 적합한 값만 표현할 수있는 충분한 용량을 가지고 있으므로 널 입력 가능할 수 없습니다. null 값을 표시하는 데 필요한 추가 용량이 없습니다.

Nullable 구조는 참조 형식이 디자인 상 null 허용 가능하므로 null 형식 만 사용하여 값 형식을 지원합니다.

Nullable 클래스는 Nullable 구조에 대한 보완적인 지원을 제공합니다. Nullable 클래스는 기본 값 형식이 일반 비교 및 ​​등호 연산을 지원하지 않는 Null 허용 형식 쌍에 대해 Null 허용 형식의 기본 형식과 비교 및 ​​같음 연산을 가져 오는 것을 지원합니다. 배열이 참조 형식 (에 포함 된 유형은 값 유형이 경우에도) 때문에 도움말 문서에서

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

관련 문제