2010-12-20 2 views
34
struct AccountInfo 
{ 
    String Username; 
    String Password; 
} 

이제 Nullable 인스턴스를 작성해야합니다.정의에 따라 'struct'Nullable을 만드는 방법은 무엇입니까?

Nullable<AccountInfo> myAccount = null; 

하지만 struct을 자연스럽게 만들고 싶고 Nullable<T>을 사용하지 않고 다음과 같이 사용할 수 있습니다.

AccountInfo myAccount = null; 
+9

수업에 참여 하시겠습니까? – Shurdoof

+3

두 멤버로만 생각했습니다. 부끄러워서 누군가 내 코드를 들여다 보았습니다. – Xaqron

+1

가변 구조는 두 멤버 만있는 클래스보다 훨씬 문제가 있습니다. –

답변

42

수 없습니다. Struct는 값 유형으로 간주되며 정의 상 null 일 수 없습니다. nullable을 만드는 가장 쉬운 방법은 참조 유형으로 만드는 것입니다.

스스로에게 묻는 대답은 "왜 이것이 구조체입니까?"입니다. 정말로 견고한 이유를 생각할 수 없으면하지 말고 그것을 수업으로 만들어야합니다. 구조체가 "더 빠름"에 대한 인수는 구조체가 스택에 반드시 생성되는 것은 아니기 때문에 (실제로이 구조체에 의존하지 말아야 함) 실제로 과장됩니다. 속도는 "사례"별로 다릅니다.

에릭 리 퍼트 (Eric Lippert)가 구조 대 토론과 속도에 대해 post을 참조하십시오.

14

짧은 대답 : 수업에 들어라.

긴 대답 :이 구조체는 변경해서는 안되며 구조체가 항상 있어야하는 단일 값을 나타내지 않으며 구조체가 항상 있어야하는 합리적인 '0'값을 갖지 않으므로 아마도 그렇지 않아야합니다. 가치 유형. 클래스 (참조 유형)를 작성하면 항상 null이 될 수 있습니다.


참고 : "never"및 "always"와 같은 단어의 사용은 암시적인 "거의"와 함께 수행되어야합니다.

+1

+1에 대한 참고 – Dlongnecker

25

선언 할 때 "?"기호로 선언하십시오. 원하는 경우

AccountInfo? myAccount = null;

+7

그것은 그것을 "정의"하지 않습니다. 그것은 그것을 선언합니다. 'Nullabe '을 더 짧게 만들기위한 –

+3

+1 그리고 또한 ... – Xaqron

관련 문제