¿Por qué cada clase en .Net deriva de System.Object? ¿Cuales son los beneficios?¿Por qué cada clase en .Net deriva de System.Object? ¿Cuales son los beneficios?
Respuesta
Te planteo la pregunta opuesta: ¿por qué no? Si no fuera por un ancestro común, ¿cómo haría referencia a "algún objeto de cualquier tipo"? A veces eso es necesario. Realmente, sin embargo, la clase System.Object
tiene algunos métodos útiles que son útiles en general para cualquier tipo:
Equals
ayuda a prueba de igualdadGetHashCode
ayuda con el rendimiento en coleccionesGetType
- todos los objetos tienen algún tipoFinalize
para apoyar CLR finalización
Debido a que estas cosas son co Mmon a todos los tipos, puede tener código (incluso antes de los genéricos) que operan de manera inteligente en varios tipos.
Con eso dicho, sin embargo, en C# 4.0, han introducido dynamic
que es realmente una jerarquía de clase propia. Omite por completo la verificación estática de tipos y no deriva necesariamente de object
. MSDN tiene un good article al respecto, y Chris Burrows' blog series también es interesante.
Si todo se deriva de una sola clase, puede tener comportamientos que son universales, como "es", "como", ToString() y GetHashCode(). Puede usar estos operadores/métodos en cualquier variable.
También puede pasar todo genéricamente como un 'objeto', que es una forma mucho más agradable que el uso de punteros vacíos.
incluso en el sistema dotnet, algunas clases se derivan de interfaces vacías para el casting, mientras que las operaciones de progeress – dankyy1
Sin este comportamiento:
- Sería casi imposible comparar objetos de diferentes clases utilizando los Iguales() método.
- No podrá almacenar instancias de su clase en las colecciones estándar (no genéricas).
- No podrá confiar en la conversión implícita al tipo String.
Además, si no me equivoco, todo el modelo de gestión de memoria de .NET gira en torno al tipo System.Object.
En el mundo administrado sacrificas el uso de punteros, pero tienes referencias. Así, mientras que no se puede tener algo como esto:
SomeClass obj = new SomeClass();
void* pObj = &obj;
que puede tener esto para los tipos de referencia (y los tipos de valor a través de boxeo, pero eso no es realmente la misma cosa), gracias a la herencia:
object pObj = obj;
Por supuesto, hay otros beneficios, pero he visto principalmente el uso de object
como reemplazo de los indicadores de vacío.
- 1. ¿Cómo funciona jemalloc? ¿Cuales son los beneficios?
- 2. ¿Cómo es CUDA? ¿Para qué sirve? ¿Cuales son los beneficios? ¿Y cómo comenzar?
- 3. Prototipo vs. No, ¿qué son los beneficios?
- 4. IComparable algunos de los cuales son nulos
- 5. ¿Cuáles son los beneficios de usar Scala en .Net?
- 6. ¿Cuáles son los verdaderos beneficios de ExpandoObject?
- 7. boxeo y unboxing, ¿por qué las salidas no son "System.Object"?
- 8. ¿Cuáles son los beneficios de la sesión por conversación?
- 9. ¿Cuántos y cuales son los usos de "const" en C++?
- 10. ¿Cuáles son los beneficios de Java?
- 11. ¿Por qué se define MemberwiseClone en System.Object?
- 12. ¿Cuáles son los beneficios de corutinas?
- 13. ¿Cuáles son los beneficios de Persistence Ignorance?
- 14. ¿Cuáles son los mayores beneficios de LLVM?
- 15. ¿Cuáles son los beneficios de usar una clase parcial en lugar de una clase abstracta?
- 16. ¿Cuáles son los beneficios de JRebel?
- 17. ¿Cuáles son los beneficios de letrec?
- 18. ¿Cuáles son los beneficios de JCA?
- 19. ¿Cuáles son los beneficios de Scala?
- 20. ¿Cuáles son los beneficios de usar WCF?
- 21. ¿Qué son los metadatos en .NET?
- 22. ¿Cuáles son los beneficios de utilizar un iterador en Java
- 23. ¿Cuáles son los beneficios prácticos del uso de microformatos para cada cosa posible?
- 24. GAE y Django: ¿Cuáles son los beneficios?
- 25. ¿Qué son los objetos de "primera clase"?
- 26. Cómo fundido System.Object [*] para System.Object []
- 27. ¿Cuáles son los mayores beneficios de usar INDEXES en mysql?
- 28. ¿Qué son las extensiones OpenGL, y cuáles son los beneficios/compensaciones de usarlas?
- 29. C# - ¿Cuáles son los beneficios de las clases "parciales"?
- 30. ¿Cuáles son los beneficios de usar propiedades internamente?
Se requiere para que el recolector de basura funcione. –