클래스의 문자열 멤버 변수를 ""로 설정할 필요가 있습니까? 당신이 이것을하지 않으면 null
일까요?클래스의 멤버 문자열 변수를 ""로 설정할 필요가 있습니까?
답변
문자열이 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를 참조하십시오.
예, 문자열의 기본값은 null입니다.
문자열의 기본값은 null입니다.
이 이미 질문과 대답되었습니다 많은 시간을 잊지 마세요. 그리고 이전의 답변자는 처음 답변에 응답하지 않고 바로 두 번째 질문으로 뛰어 들었습니다. 단순한 Google 검색에서 기본값이 무엇인지 알려주므로 더욱 중요합니다.
"클래스의 문자열 멤버 변수를" "(으)로 설정해야합니까?"
"필요"가 의미하는 바에 따라 다릅니다. 당신이 가독성이 좋고 그렇다면 필요가있을 수 있습니다. 그것은 당신의 팀이 합의한 결정을 요구하는 개인적인 결정입니다. 변수가 적절한 위치에 기본값으로 주어지면 개인적으로 훨씬 더 읽기 쉽도록 찾습니다. 올바른 위치에서 컴파일러를 사용하면 컴파일러가이를 최적화 할 수 있으므로 가독성이 떨어집니다.
우수한 통찰력은 here입니다.
문자열을'' "''로 설정하여"필요 "하다면 StyleCop의 조언을 따르고 대신'string.Empty'를 사용할 수 있습니다. –
나는 아무것과 아무것도 관계가없는 ""과 null 사이를지지하지 않습니다. 변수가 초기화되지 않으면 매우 짧지 만 본질적으로 중단이 필요하여 변수가 설정되지 않은 경우 기본값이 무엇인지 생각해야합니다. 이러한 중단 (초기화되지 않은 변수는 하나의 예일 뿐이며 그 중 하나는 미숙 한 변수입니다)은 가독성의 핵심 요소 중 하나입니다. – sliderhouserules
- 클래스의 문자열 멤버 변수를 ""로 설정할 필요가 있습니까?
은 수업 방법 (즉, 그 값을 사용하기 전에 널 (null)이 있는지 확인) 문자열 멤버 변수의 기본값은 null
것을 알고 적절하게 대처하지 않을 경우.
그렇지 않으면 null이 아닌 값으로 초기화하는 것이 좋습니다. 이렇게하면 변수에 항상 null이 아닌 값이 있다고 가정 할 수있는 경우 메소드를 단순화 할 수 있습니다.
- 이렇게하지 않으면 null이됩니까?클래스 오브젝트가 생성 될 때
예, 반드시 초기 값없이 참조 타입 (예를 들면, string
)의 멤버 변수가 기본적으로 null
초기화된다.
또한 앱에서 null과 빈 ""을 구분하지 않으면 값을 테스트 할 때 String.IsNullOrEmpty()
을 사용하십시오. 공백을 공백으로 처리하는 경우 새 String.IsNullOrWhiteSpace()
을 사용하십시오. null, ""및 ""이 true가됩니다. 비 공백 문자는 false가됩니다.
string s = GetSomeString();
if(String.IsNullOrEmpty(s)) {
//do whatever here
}
- 1. 지정된 클래스의 멤버 변수를 전달합니다.
- 2. 정적 함수 내부에서 멤버 변수를 가져 오거나 설정할 수 있습니까?
- 3. 서브 클래스의 추상 클래스 멤버 변수를 제공
- 4. ISAPI에서 헤더를 "빈 문자열"로 설정할 수 있습니까?
- 5. 클래스의 C++ 정적 멤버
- 6. 인스턴스 클래스의 정적 멤버
- 7. 개인 클래스의 멤버 액세스
- 8. Phone 7에서 정적 클래스의 문자열 변수를 textBlock에 바인딩하는 데이터가 있습니까?
- 9. 해당 클래스의 인스턴스가없는 경우에도 멤버 상수를 사용할 수 있습니까?
- 10. 클래스의 초기화되지 않은 상수 멤버
- 11. 정적 배열 변수를 잠글 필요가 있습니까?
- 12. 멤버 변수를 사용하거나 함수 내에서 변수를 선언해야합니까?
- 13. 이 applescript로 전역 변수를 설정할 수 있습니까?
- 14. 정적 메서드 내에서 클래스의 멤버 변수를 호출하려면 어떻게해야합니까?
- 15. 클래스 메서드 구현 : 클래스의 멤버 변수를 변경하거나 인수를 받아야합니까?
- 16. 클래스의 이름을 동적으로 설정할 수 있습니까?
- 17. QGraphicsItem에 대한 툴팁으로 멤버 속성을 어떻게 설정할 수 있습니까?
- 18. 인터페이스에 멤버 변수를 사용할 수 있습니까?
- 19. C++ static 멤버 함수에서 private 멤버 변수를 변경하십시오.
- 20. 이것을 클래스의 const int 멤버 변수로 선언해야합니까?
- 21. 소멸자의 멤버 변수를 무효화해야합니까?
- 22. Capistrano는 역할에 따라 변수를 설정할 수 있습니까?
- 23. ASP.NET MVC : 전역 변수를 설정할 수 있습니까?
- 24. sed에서 LANG 변수를 설정할 수 있습니까?
- 25. Eclipse : {user} 변수를 어떻게 설정할 수 있습니까?
- 26. linux에서 사용자 환경 변수를 설정할 수 있습니까?
- 27. 게시 매개 변수를 설정할 수있는 방법이 있습니까?
- 28. C++ 클래스의 정적 멤버 변수에 대한 쿼리
- 29. 클래스의 파생 멤버 재정의 override
- 30. 클래스의 멤버 복사와 혼동 됨
확인이 또한 http://stackoverflow.com/questions/265875/default-string-initialization-null-or-empty –
나는 Jerod와 jean27 사이의 넥타이를 파괴 할 수있는 방법이 필요합니다. – CJ7
Jerod의 대답을 받아 들인 그는 처음에 대답했습니다 ... – Hinek