C#에서는 이제 default(Foo)
을 사용하여 클래스의 "채워지지 않은"/ 빈 인스턴스를 인식 할 수 있습니다. 정확히 new Foo()
과 같은지 확실하지 않습니다. 많은 라이브러리 클래스도 비슷한 인스턴스를 반환하는 Foo.Empty
속성을 구현합니다. 물론 모든 참조 유형은 null
을 가리킬 수 있습니다. 그래서 정말로, 차이점은 무엇입니까? 언제 옳고 그른가? 무엇이 더 일관성이 있고, 더 잘 수행됩니까? 어떤 객체가 개념적으로 "황금 시간대에 준비되지 않았는지"를 검사 할 때 어떤 테스트를 사용해야합니까? 누구나 Foo.IsNullOrEmpty()
이있는 것은 아닙니다.기본값 (Foo), Foo.Empty 또는 null을 사용해야합니까?
답변
default(Foo)
널을 반환한다. 제네릭은 모두 가치와 참조 유형을 지원 할 수 있도록 그것은 언어에 추가 - 더 info at MSDN
사용하면 SomeClass<T>
또는 MyMethod<T>
의 컨텍스트에서 T를 테스트하는 당신은 T 값 수 있을지 모른다 default(Foo)
유형, 클래스 유형 또는 구조체.
null은 "unknown"을 의미하고 "empty"는 "empty this is empty"를 의미해야합니다. 진정으로 비어 있지만 null이 아닌 클래스의 인스턴스가 필요하면 Foo.Empty 패턴을 사용하십시오. 예 : 일부 변수를 빈 문자열로 초기화해야하는 경우 ""
대신 String.Empty
을 입력하십시오.
참조 유형 (클래스)으로 작업하고 있으며 제네릭이 없으며 초기화되지 않은 참조를 명시 적으로 테스트하고있는 경우 null을 사용하십시오.
default(Foo)
은 값 유형과 참조 유형 모두에서 작동합니다. New Foo(), null
및 Foo.Empty()
하지 않습니다. 따라서 일반적인 유형의 사용에 적합합니다 (예 : 상대방을 모를 때). 하지만 대부분의 레퍼런스 유형의 경우 null
이면 충분합니다. Foo
가 Foo
이 값 유형 (예 : 정수)이고 클래스 타입, 제로 및 Foo
이 구조체이다 그들의 각 default()
값으로 초기화 된 모든 필드 Foo
의 인스턴스 인 경우
관련된 실제 유형을 알고 있거나 ": class"로 제한된 유형 매개 변수가있는 경우 알려진 값 (null, 0 등)을 사용하는 것이 가장 간단합니다.
기준 유형이 아닌 제약이 있거나 제한된 유형 매개 변수가있는 경우 기본값 (T)을 사용해야합니다.
- 1. 기본값 인 NULL을 사용하는 것이 좋습니까?
- 2. var foo = foo || 경고 (foo);
- 3. 상속 또는 인터페이스를 사용해야합니까?
- 4. JBoss의 어떤 구성을 사용해야합니까 - 웹, 표준, 기본값?
- 5. 차이점 Foo * foo; 그리고 Foo foo; C++에서
- 6. 포크 또는 스레드를 사용해야합니까?
- 7. 값 또는 키를 사용해야합니까?
- 8. 더 효율적입니다 : .parent(). parent(). parent() ~ 또는 parents (". foo") ~ 또는 ~ closest (". foo")
- 9. 레일 부울 필드 :`is_foo` 또는 그냥`foo`?
- 10. Linq가 객체 또는 null을 반환하도록하십시오
- 11. 상속 또는 구성을 사용해야합니까?
- 12. CouchDB 또는 SimpleDB를 사용해야합니까?
- 13. AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory를 사용해야합니까?
- 14. ArrayList 또는 IList를 사용해야합니까?
- 15. em 또는 px를 사용해야합니까?
- 16. TNSNAMES.ORA 또는 tnsnames.ora를 사용해야합니까?
- 17. 리스너 또는 옵저버를 사용해야합니까?
- 18. DataInputStream 또는 BufferedInputStream을 사용해야합니까?
- 19. Pylons 또는 Pyramid를 사용해야합니까?
- 20. int 또는 UInt16을 사용해야합니까?
- 21. PHP 또는 ASP를 사용해야합니까?
- 22. NSOperation 또는 NSRunLoop을 사용해야합니까?
- 23. MonoDroid 또는 Android를 사용해야합니까?
- 24. byte 또는 int를 사용해야합니까?
- 25. WPF 또는 SlimDX를 사용해야합니까?
- 26. msgsnd 또는 mq_send를 사용해야합니까?
- 27. 다시 작성 index.php? foo = bar & bar = foo to index.php? foo = bar & bar = foo
- 28. 어떤 종류의 배열이 Foo()가 Foo()입니까?
- 29. 기본값
- 30. XSD의 기본값
Foo 란 무엇입니까? 각 유형마다 다른 기본값이 있습니다! – azamsharp