2010-06-30 4 views
3

클래스의 문자열 멤버 변수를 ""로 설정할 필요가 있습니까? 당신이 이것을하지 않으면 null일까요?클래스의 멤버 문자열 변수를 ""로 설정할 필요가 있습니까?

+0

확인이 또한 http://stackoverflow.com/questions/265875/default-string-initialization-null-or-empty –

+0

나는 Jerod와 jean27 사이의 넥타이를 파괴 할 수있는 방법이 필요합니다. – CJ7

+1

Jerod의 대답을 받아 들인 그는 처음에 대답했습니다 ... – Hinek

답변

19

문자열이 null이되는 이유는 문자열이 참조 유형이고 모든 참조 유형의 기본값이 null (참조 없음)이기 때문입니다.

string a = default(string); // null 
String b = default(String); // null 
int c = default(int); // 0 
int? d = default(int?); // null 
Object e = default(object); // null 
double f = default(double); // 0.0 

// an instance of someStruct with fields set to default(theirType) 
someStruct g = default(someStruct); 

문자열 종류의 그것 때문에 값 형식 것 같다 : 가장 좋은 참조가 Default Values Table하지만 몇 가지 예는 다음과 괜찮은 아이디어를 제공 (모든 참조 형식은 기본적으로 null로 설정되어 기억)입니다

너무 원시적 인 것처럼 보입니다. 또한 문자열을 수정할 수 없다는 의미는 불변합니다. 문자열 대신 문자열 기호를 설정하여 새로운 문자열 "값"(자체적으로 참조)을 가리키게하여 문자열이 값 유형이라는 인상을줍니다. 예를 들어

: 문자열에 대한 추가 정보를 원하시면

string a = "boo"; 
/* Mem contains reference to "boo" and symbol 'a' => reference("boo") */ 

a = "gah"; 
/* Mem contains references to "boo" and "gah". symbol 'a' -> reference("gah") */ 

this great article를 참조하십시오.

그리고 the Default Values Table.

6

예, 문자열의 기본값은 null입니다.

6

문자열의 기본값은 null입니다.

1

이 이미 질문과 대답되었습니다 많은 시간을 잊지 마세요. 그리고 이전의 답변자는 처음 답변에 응답하지 않고 바로 두 번째 질문으로 뛰어 들었습니다. 단순한 Google 검색에서 기본값이 무엇인지 알려주므로 더욱 중요합니다.

"클래스의 문자열 멤버 변수를" "(으)로 설정해야합니까?"

"필요"가 의미하는 바에 따라 다릅니다. 당신이 가독성이 좋고 그렇다면 필요가있을 수 있습니다. 그것은 당신의 팀이 합의한 결정을 요구하는 개인적인 결정입니다. 변수가 적절한 위치에 기본값으로 주어지면 개인적으로 훨씬 더 읽기 쉽도록 찾습니다. 올바른 위치에서 컴파일러를 사용하면 컴파일러가이를 최적화 할 수 있으므로 가독성이 떨어집니다.

우수한 통찰력은 here입니다.

+4

문자열을'' "''로 설정하여"필요 "하다면 StyleCop의 조언을 따르고 대신'string.Empty'를 사용할 수 있습니다. –

+0

나는 아무것과 아무것도 관계가없는 ""과 null 사이를지지하지 않습니다. 변수가 초기화되지 않으면 매우 짧지 만 본질적으로 중단이 필요하여 변수가 설정되지 않은 경우 기본값이 무엇인지 생각해야합니다. 이러한 중단 (초기화되지 않은 변수는 하나의 예일 뿐이며 그 중 하나는 미숙 한 변수입니다)은 가독성의 핵심 요소 중 하나입니다. – sliderhouserules

1
  • 클래스의 문자열 멤버 변수를 ""로 설정할 필요가 있습니까?

은 수업 방법 (즉, 그 값을 사용하기 전에 널 (null)이 있는지 확인) 문자열 멤버 변수의 기본값은 null 것을 알고 적절하게 대처하지 않을 경우.

그렇지 않으면 null이 아닌 값으로 초기화하는 것이 좋습니다. 이렇게하면 변수에 항상 null이 아닌 값이 있다고 가정 할 수있는 경우 메소드를 단순화 할 수 있습니다.

  • 이렇게하지 않으면 null이됩니까?클래스 오브젝트가 생성 될 때

예, 반드시 초기 값없이 참조 타입 (예를 들면, string)의 멤버 변수가 기본적으로 null 초기화된다.

1

또한 앱에서 null과 빈 ""을 구분하지 않으면 값을 테스트 할 때 String.IsNullOrEmpty()을 사용하십시오. 공백을 공백으로 처리하는 경우 새 String.IsNullOrWhiteSpace()을 사용하십시오. null, ""및 ""이 true가됩니다. 비 공백 문자는 false가됩니다.

string s = GetSomeString(); 

if(String.IsNullOrEmpty(s)) { 
//do whatever here 
} 
관련 문제