.Net의 각 클래스가 System.Object에서 파생되는 이유는 무엇입니까? 이점은 무엇입니까? , ToString() 및 GetHashCode() "로"예 "입니다"와 같은 - 모든 것이 하나의 클래스에서 파생 된 경우.Net의 각 클래스가 System.Object에서 파생되는 이유는 무엇입니까? 이점은 무엇입니까?
답변
나는 당신에게 반대의 질문을 던집니다. 왜 안 되니? 일부 공통 조상이 아니라면 "어떤 유형의 객체"에 대한 참조를 어떻게 가질 수 있습니까? 때로는 그것이 필요합니다. 정말, 그래도 System.Object
클래스는 모든 유형의 일반적으로 유용한 몇 가지 유용한 방법이 있나요 :
Equals
평등GetHashCode
에 대한 테스트 컬렉션 성능GetType
하는 데 도움이 도움이 - 모든 객체는 몇 가지 유형이Finalize
이러한 일들이 공동이기 때문에 CLR의 마무리를
을 지원하는 다양한 유형에 대해 지능적으로 작동하는 코드를 사용할 수 있습니다 (제네릭 이전까지도). 그와
는하지만, C#을 4.0에서, 그들은 정말 자신의 클래스 계층 구조입니다 dynamic
을 도입 한 것을. 정적 유형 검사를 생략하고 반드시 object
에서 파생되지는 않습니다. MSDN은 good article이며, Chris Burrows' blog series도 흥미 롭습니다. 이 동작없이
, 당신은 보편적 행동을 할 수 있습니다. 이러한 연산자/메서드는 모든 변수에서 사용할 수 있습니다.
또한 무효 포인터를 사용하는 것보다 훨씬 더 좋은 방법 인 '객체'로 일반적으로 아무것도 전달할 수 있습니다.
dotnet 시스템에서도 일부 클래스는 캐스팅 목적으로 빈 인터페이스에서 파생됩니다. – dankyy1
:
- 그것은() 메서드 같음을 사용하여 다른 클래스의 객체를 비교하는 것은 거의 불가능하다.
- 표준 (비 일반) 컬렉션에 클래스 인스턴스를 저장할 수 없게됩니다.
- String 형식의 암시 적 변환에 의존 할 수 없습니다.
또한 실수하지 않으면 .NET의 전체 메모리 관리 모델이 System.Object 유형을 중심으로 돌아갑니다.
관리되는 세계에서 포인터 사용은 희생되지만 참조는 있습니다. 이 같은 것을 가질 수는 없지만 그래서 : 감사 상속을
SomeClass obj = new SomeClass();
void* pObj = &obj;
당신은 참조 유형이있을 수 있습니다 (권투를 통해 값 유형,하지만 그건 정말 같은 일이 아니에요) :
object pObj = obj;
물론 다른 이점도 있습니다. 그러나 주로 void 포인터 대신에 object
을 사용하는 것으로 나타났습니다.
- 1. 방법은이 클래스가 이미에서 파생되는 클래스는 방법
- 2. 클래스가 파생되는 추상 클래스 형식 가져 오기
- 3. .NET의 HashTable에 추가 된 Keyboard Accelerator의 이점은 무엇입니까? 오랫동안
- 4. C#/VB.NET 컴파일러가 System.MulticastDelegate에서 파생되는 클래스를 허용하지 않는 이유는 무엇입니까?
- 5. Hypervisor VM의 이점은 무엇입니까?
- 6. 매크로 : 이점은 무엇입니까?
- 7. 각 메소드가 호출되는 이유는 무엇입니까?
- 8. 수락 테스트 자동화의 이점은 무엇입니까?
- 9. JCA의 이점은 무엇입니까?
- 10. "계단"분기의 이점은 무엇입니까?
- 11. currying의 실질적인 이점은 무엇입니까?
- 12. CommonJS에서 '약속'추상화의 이점은 무엇입니까?
- 13. WCF에서 WSDualHttpBinding의 이점은 무엇입니까?
- 14. 동적 타이핑의 이점은 무엇입니까?
- 15. BackColor가 .NET의 TabControls에서 작동하지 않는 이유는 무엇입니까?
- 16. DateTime이 .NET의 구조체 인 이유는 무엇입니까?
- 17. intrusive_ptr : 공통 기본 클래스가 제공되지 않는 이유는 무엇입니까?
- 18. IEnumerable에서 파생되는 인터페이스 만들기
- 19. solr에서 mutivalued 옵션의 이점은 무엇입니까
- 20. 이 클래스가 Serializable이 아닌 이유는 무엇입니까?
- 21. CSS 클래스가 적용되지 않는 이유는 무엇입니까? 다음
- 22. 클래스가 요즘 인터페이스로 정의되는 경향이있는 이유는 무엇입니까?
- 23. 매번이 클래스가 다시 초기화되는 이유는 무엇입니까?
- 24. C++ 클래스가 추상화 된 이유는 무엇입니까?
- 25. Java의 Method 클래스가 일반적이지 않은 이유는 무엇입니까?
- 26. SEL이 Objective-C의 클래스가 아닌 이유는 무엇입니까?
- 27. .NET Colors 클래스가 정적이 아닌 이유는 무엇입니까?
- 28. 인터 포저 클래스가 컴파일되지 않는 이유는 무엇입니까?
- 29. java.sql.Statement가 추상 클래스가 아닌 이유는 무엇입니까?
- 30. 클래스가 존재할 때이 NoClassDefFoundError가 throw되는 이유는 무엇입니까?
가비지 컬렉터가 작동해야합니다. –