:C에서 null이 아닌 값 형식을 null로 만들려면 어떻게해야합니까? 예를 들어
public class Stereo {
public Speaker? LeftSpeaker;
public int? Volume;
}
int?
작품이 좋은,하지만 난 스피커 널 (NULL)을 드릴 수 없습니다. 이것은 Google에 놀라 울 정도로 힘든 것으로 드러났습니다. 나는 이것이 간단 할 것이라고 생각했습니다 ...
:C에서 null이 아닌 값 형식을 null로 만들려면 어떻게해야합니까? 예를 들어
public class Stereo {
public Speaker? LeftSpeaker;
public int? Volume;
}
int?
작품이 좋은,하지만 난 스피커 널 (NULL)을 드릴 수 없습니다. 이것은 Google에 놀라 울 정도로 힘든 것으로 드러났습니다. 나는 이것이 간단 할 것이라고 생각했습니다 ...
왜 그게 좋을까요? 값이없는 유형 (참조 유형)은 이미 설정되어 null
과 비교 될 수 있습니다.
참조 유형 개체 위에 Nullable<T>
래퍼를 추가하면 두 개의 개의 허용 가능 계층이 생성됩니다. 무의미한 복잡성 때문에 허용되지 않습니다.
와일드 약탈은 :
public class Stereo {
public Speaker LeftSpeaker;
public int? Volume;
public Stereo() {
LeftSpeaker = null; // Mission accomplished.
}
}
@ Noldorin : woops. '()'을 놓치지 않았나요? –
그래, 나는 당신을 위해 그것을 고칠 수 있지만 그것은 명백한 오타 였기 때문에. :) – Noldorin
@ Noldorin : 아니 땀. 나는 지난 2 일 동안 더미 클래스의 프로퍼티를 대량으로 생성 해 왔기 때문에 내 뇌는 단지 광택이있다. :) –
그것은 간단하다. "비 가치"유형은 실제로 .NET에서 참조 유형이라고하며 자동으로 null을 사용할 수 있습니다. 이미 여기
public class Stereo {
public Speaker LeftSpeaker; // ? removed for ref type
public int? Volume;
}
물고기의 많은 -하지만 당신은 낚시하는 방법을 배우고 싶은 경우에, 나는 Jon Skeet의 책 C# in Depth에보고를 제안 : 그냥 thusly 히 코드를 변경합니다. 4.1에서 4.5 장까지는 C#의 "무효 개념"의 모든면을 다룹니다.
'duh' 질문에 대한 반박이 유행입니다. –
글쎄, 이것이 "참조 유형을 null 가능하게"하는 Googling이 아무 것도 나타나지 않는 이유 일 수 있습니다. 감사! – user500038