Si se refiere a la hora en que se llama al destructor en los objetos, entonces eso depende del recolector de basura, la programación puede tener muy poca influencia sobre eso, y es explícitamente no determinista según la definición del lenguaje.
Si se refiere a llamar IDisposable.Dispose(), eso depende del comportamiento de los objetos que implementan la interfaz IDisposable.
En general, el pedido no es importante para la mayoría de los objetos de Framework, excepto en la medida en que sea importante para el código de llamada. Pero si el objeto A mantiene una dependencia en el objeto B, y el objeto B está dispuesto, entonces podría ser importante no hacer ciertas cosas con el objeto A.
En la mayoría de los casos, no se llama a Dispose() directamente, más bien, se denomina implícitamente como parte de una declaración using o foreach, en cuyo caso el patrón de orden inverso surgirá de forma natural, de acuerdo con la incrustación de la declaración.
using(Foo foo = new Foo())
using(FooDoodler fooDoodler = new FooDoodler(foo))
{
// do stuff
// ...
// fooDoodler automatically gets disposed before foo at the end of the using statement.
}
Bien creado no es bueno. Tiene que depender del pedido, depende del lanzamiento y se conoce en muchas circunstancias. No podría importar más en todas las implementaciones de bases de datos, transacciones y cualquier cosa que se ejecute en una pila (la mayoría del software). Las cerraduras son otro ejemplo y hay montones de bibliotecas no externas y no pobres que lo usan. Las operaciones de archivo y sus bloqueos son otra. Fugas de eventos otra. Cualquier recurso no gestionado dependiendo de otro. La creación y la destrucción van de la mano, y la expresión idiomática no se puede interpretar como Inicialización de los recursos: es "bien-creación". –
Para que el WC en oxímoron RIIWC se reemplace por Adquisición, lo que implica una Liberación por cierto. Y dado que la memoria y la gran cantidad de recursos son en su mayoría abstraídos, ops, ahí va la idea ... y se producen intrusiones de todo tipo. En pocas palabras, es simplemente la naturaleza del problema y es muy importante. –
Y aunque no estoy defendiendo la dependencia del orden aquí, la observación correcta es que es muy relevante pero raramente deseable. Pero es algo que incluso las especificaciones oficiales de VM están extremadamente restringidas. Java impl especialmente y CLR a un nivel menor, pero aún significativo. Es un truco no romper grandes cantidades de códigos de trabajo y suposiciones hechas, una decisión consciente por el compilador y los diseñadores de back-end jit. El código que es capaz de procesar independientemente de la orden se presta a una gran variedad de posibilidades, pero puede ser inviable para muchos escenarios. –