Si uno pudiera poner una matriz de punteros a estructuras secundarias dentro de estructuras inseguras en C# como podría hacerlo en C, construir estructuras de datos complejas sin la sobrecarga de tener un objeto por nodo sería mucho más fácil y menos hundido, como así como sintácticamente más limpio y mucho más legible.¿Cuál es la razón subyacente para no poder poner matrices de punteros en estructuras inseguras en C#?
¿Existe una profunda razón arquitectónica por la cual las matrices fijas dentro de las estructuras inseguras solo pueden estar compuestas de "tipos de valores" y no de punteros?
Supongo que solo tener punteros explícitamente nombrados dentro de las estructuras debe ser una decisión deliberada de debilitar el lenguaje, pero no puedo encontrar ninguna documentación sobre por qué esto es así, o el razonamiento para no permitir matrices de punteros dentro de las estructuras, ya que supondría que al recolector de basura no le importa lo que está pasando en las estructuras marcadas como inseguras.
Digital Mars 'D maneja estructuras y punteros con elegancia en comparación, y me falta no poder desarrollar rápidamente estructuras de datos sucintas; Al hacer referencias abstractas en C#, parece que se ha eliminado una gran cantidad de poder del lenguaje, a pesar de que los punteros todavía están allí, al menos en un sentido de comercialización.
Tal vez sea incorrecto esperar que los idiomas se vuelvan más poderosos en la representación de estructuras de datos complejas de manera eficiente con el tiempo.
Lo perfilador me recomiendan? – cons
Esa no puede ser la razón, ya que puedes usar punteros para otras estructuras inseguras dentro de estructuras inseguras (no hay problema con crear una estructura de árbol binario de esa manera ...) La restricción se aplica solo a matrices dentro de estructuras inseguras (llamadas tampones de tamaño), y la razón para esto no es obvia en mi opinión (Consulte mi respuesta para una posible explicación) – MartinStettner
@cons: Vea esta pregunta: http://stackoverflow.com/questions/3927/ –