Recientemente me he enterado del hecho de que necesito especificar la opción "inseguro" cuando trabajo con ciertos conceptos en C#/Mono. No solo tengo que especificar la opción en mi código, también debo especificarlo al compilarlo, lo que invoca la sensación de que "este código es intrínsecamente inseguro y riesgoso de usar". Lo extraño es que DllImport no necesita la marca insegura, por lo que puedo crear segfaults todo lo que quiero en mi "código de seguridad". ¿Hay alguna razón para evitar el código inseguro que he pasado por alto?¿Hay algún punto para evitar el uso de "inseguro" en Mono?
Respuesta
DllImport es un concepto bien conocido para la mayoría de los desarrolladores de C#. También resulta en un área relativamente pequeña donde podría ocurrir el segfault. Con el código unsafe
puede crear bloqueos aleatorios mucho más fácilmente y en lugares no relacionados con la llamada unsafe
(manipulando regiones de memoria fuera de lo que creía que estaba tocando).
Es muy parecido a las advertencias del compilador: algunos desarrolladores no les prestan atención, algunos convierten "Tratar advertencias como errores" en "Todos". ¿Adivina qué resultados en el código es más fácil de mantener?
Además, DllImport en sí no es una buena idea si se puede evitar (debido a posibles problemas de rotura/errores perdidos/portabilidad y así sucesivamente).
Derecha. Básicamente, un bloque inseguro es exactamente una gran bandera roja que dice "¡eh, este código es de hecho inseguro y arriesgado de usar!" Porque es; has desactivado las protecciones de seguridad puestas en su lugar porque el código inseguro era fácil de estropear en primer lugar. – Andy
- 1. ¿Hay algún punto para atrapar "segfault"?
- 2. ¿Hay algún punto para minificar a PHP?
- 3. ¿Hay algún truco para "sobrecargar el operador de punto"?
- 4. ¿Hay algún F # IDE que funcione en Mono?
- 5. ¿Hay algún punto verdadero en la interfaz de Java?
- 6. ¿Hay algún uso de mónadas en el entorno .net?
- 7. ¿Hay algún uso para la decoración de tiro de C++?
- 8. ¿Hay algún punto de usar "return! 0" en javascript?
- 9. ¿Hay algún uso para declaraciones de funciones locales?
- 10. ¿Hay algún uso de favicon.ico para sitios web móviles?
- 11. ¿Hay algún punto de serialización de prueba de la unidad?
- 12. ¿Cuál es el punto de Mono en Windows
- 13. ¿Hay algún inconveniente en el uso de funciones anónimas en JavaScript? P.ej. ¿uso de memoria?
- 14. ¿Hay algún uso para hacer un destructor protegido virtual?
- 15. ¿Hay algún punto de referencia de rendimiento para Thrift en HBase?
- 16. ¿Hay algún problema con el uso de Sinatra para desarrollar un sitio web completo?
- 17. Uso de mono en Linux integrado para hardware
- 18. Prueba si el punto está en algún rectángulo
- 19. ¿Hay algún impacto en el rendimiento en el uso de Live en lugar de vincular jQuery?
- 20. ¿Hay algún límite para setTimeout?
- 21. ¿Hay algún resultado de prueba de rendimiento para el uso de sugerencias probables/improbables?
- 22. ¿Hay algún libtorrent para C#?
- 23. Uso de C# para mostrar el punto de energía
- 24. ¿Hay algún problema con el uso de los atributos "data- *" de HTML5 para navegadores más antiguos?
- 25. Desarrollar una aplicación web con Mono (opensource .NET) ¿algún ejemplo?
- 26. ¿Hay algún diseñador gráfico para ASP.NET MVC?
- 27. ¿Hay algún IDE en línea para Java?
- 28. ¿Hay algún enlace para descargar un punto de referencia de Apache Apa
- 29. ¿Debo evitar el uso de la mónada?
- 30. ¿Hay algún evento "en el cambio DOM"?
Lo evitarías por las mismas razones por las que lo evitarías en .NET Framework. Como Skolima indicó que no es seguro, en teoría, manejarás todo lo relacionado con el código. Esto significa que si quieres dejar cosas en la memoria que no se pueden limpiar, puedes hacer exactamente eso. No estaría de acuerdo con el comentario. Sin embargo, DllImport no es una buena idea. –