Comprendo los punteros y la rara necesidad de usarlos en el código C#. Mi pregunta es: ¿cuál es el razonamiento detrás de tener que declarar explícitamente "inseguro" en un bloque de código? Además, ¿por qué debe cambiarse una opción del compilador para permitir el código "inseguro"?C#: Ventaja de indicar explícitamente la opción "insegura"/compilador
línea de base: Lo que en el CLR (o las especificaciones del lenguaje) lo hace por lo que no se puede simplemente utilizar punteros siempre que queramos (como C y C++) sin tener que escribir "inseguro" y cambie la opción de compilador ?
Para aclaración: sé lo que es el código "inseguro" y "seguro". Es solo una cuestión de por qué debemos hacer todo el trabajo extra (vale, no tanto) solo para poder utilizar estas características.
Básicamente, ¿es MS tratando de evitar que cometamos los mismos errores que en C++? – Inisheer
Desde MS: el código C# que realiza llamadas de API de bajo nivel, usa aritmética de puntero o lleva a cabo alguna otra operación desagradable, tiene que colocarse dentro de bloques marcados con la palabra clave insegura. – VBNight
# De MS: En algunos casos, un código inseguro puede aumentar el rendimiento de una aplicación al eliminar las comprobaciones de límites de la matriz. – VBNight