Me dijeron que el decimal se implementa como el tipo definido por el usuario y otros tipos de C# como int tienen códigos de operación específicos dedicados a ellos. ¿Cuál es el razonamiento detrás de esto?¿Por qué el decimal en C# es diferente de otros tipos de C#?
Respuesta
decimal
no está solo aquí; DateTime
, TimeSpan
, Guid
, etc. también son tipos personalizados. Supongo que la razón principal es que no se asignan a primativos de CPU. float
(IEEE 754), int
, etc. son bastante ubicuos aquí, pero decimal
está hecho a medida para .NET.
Esto realmente solo causa un problema si desea hablar con los operadores directamente a través de la reflexión (ya que no existen para int, etc.). No puedo pensar en otros escenarios donde notarías la diferencia.
(en realidad, todavía hay estructuras, etc., para representar a los demás - que sólo se carece de la mayor parte de lo que se podría esperar a ser en ellos, tales como operadores)
"¿Cuál es el razonamiento detrás de esta ? "
La matemática decimal se maneja en software frente a hardware. Actualmente, muchos procesadores no admiten matemática decimal nativa (decimal financiero versus flotante). Sin embargo, eso está cambiando con la adopción de IEEE 754R.
Consulte también:
- 1. ¿Por qué WinAPI es tan diferente de la C "normal"?
- 2. C#: ¿Por qué mi SqlDateTime.MinValue es diferente en diferentes máquinas?
- 3. C# == es diferente en tipos de valores y tipos de referencia?
- 4. ¿Por qué el uso de preprocesadores es menos común en otros lenguajes distintos de C/C++/ObjC?
- 5. ¿Por qué la salida de este programa es diferente entre C y C++?
- 6. C# sizeof decimal?
- 7. ¿Por qué Decimal ('0')> 9999.0 es verdadero en Python?
- 8. ¿Por qué los operadores de división (/) se comportan de manera diferente en VB.NET y C#?
- 9. ¿Por qué la notación postfix de JavaScript es diferente de C y Perl?
- 10. ¿Qué tipos de datos de C# pueden ser tipos anulables?
- 11. ¿Por qué diferentes tipos de puntero para diferentes tipos de datos en c?
- 12. ¿Por qué C# prohíbe los tipos de atributos genéricos?
- 13. ¿Qué es el C++ moderno?
- 14. ¿Por qué C# trata 0 como int y no como short/decimal, etc.?
- 15. ¿Por qué los protocolos Objective-c adoptan otros protocolos?
- 16. C# Sufijo de tipo decimal
- 17. C# decimal separator?
- 18. C# Decimal datatype performance
- 19. ¿Por qué es 'parasitario' volátil en C++?
- 20. ¿Por qué la longitud máxima de la cadena C es literalmente diferente de la máxima char []?
- 21. Tipo decimal en Qt (C++)
- 22. ¿Por qué el color de texto de la etiqueta HTML Legend es diferente en IE vs otros navegadores?
- 23. ¿Por qué es diferente el comportamiento C++ initializer_list para std :: vector y std :: array?
- 24. ¿Por qué C# no infiere mis tipos genéricos?
- 25. ¿Qué es un evento de bucle y cómo es diferente de usar otros modelos?
- 26. ¿Por qué C++ es compatible con C? ¿Por qué no hay algún lenguaje C++ "puro"?
- 27. Redondeo personalizado de tipo decimal en C#
- 28. DigestValue en XMLSignature en Java es diferente de C#
- 29. Generación de tipos de delegados dinámicamente en C#
- 30. ¿Por qué no se anula el valor nulo en C++?
Creo que el punto es que decimal es el único tipo que recibe su propia palabra clave en C#, pero no es tratado especialmente por el CLR. –