Recientemente he notado cierto comportamiento con el Visual Studio Designer (C#) que no entiendo y me preguntaba si alguien podría aclarar ...¿Por qué el IDE de Visual Studio a veces inicializa el objeto "this.components: y otras veces no?
Un algunas de mis formas de Windows, la primera línea del diseñador genera código lee;
this.components = new System.ComponentModel.Container();
Cuando este es el caso, el método dispose, en ese mismo archivo del diseñador, dispose método coloca dos llamadas "Eliminar" dentro de la condición "si" de la siguiente manera;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
base.Dispose(disposing);
}
}
es decir, no se llama a nada a menos que la eliminación sea verdadera, Y los componentes no son nulos.
En algunas otras formas, falta esa primera línea en el código generado por el diseñador. En estos casos la llamada base.Dispose se encuentra fuera de la condición "si" como tal ...
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
he dado cuenta de esto, mientras que la pista de un error con una forma no cerrando, donde this.components era nula, sin embargo, la llamada base.Dispose estaba dentro de esa condición (sospecho que el código del diseñador había sido manipulado, pero esa es otra historia.
Qué controla este comportamiento?
(Algunas formas anteriores en el proyecto fueron creados en 2005 y VS ahora usamos VS 2008 - ¿pista?)
Gracias nobugz. He tenido la oportunidad de probar este escenario en VS2005 ahora también. Está bien. Solo puedo suponer que, como dices, esto fue "autoinducido". –
"ahora sin la llamada del constructor". Entonces, ¿qué punto en '(components! = Null)' comprueba si no hay inicialización de 'components' en ningún lado? ¿Quién, cuándo y dónde inicializa 'componentes'? Por cierto, vino aquí desde VS2010, .NET4.0 – Fulproof
Parece que tiene una nueva pregunta. Puede formularla haciendo clic en el botón Preguntar. –