Tengo curiosidad por saber que existe la propiedad (Nombre), que representa el nombre de la clase Formulario. Esta propiedad se usa dentro del espacio de nombres para identificar de manera única la clase de la que el Formulario es una instancia y, en el caso de Visual Basic, se utiliza para acceder a la instancia predeterminada del formulario.¿Por qué hay una instancia predeterminada de cada formulario en VB.Net pero no en C#?
Ahora, de donde viene esta Instancia predeterminada, por qué C no puede tener un método equivalente a esto.
También por ejemplo para mostrar una forma en C# que hacer algo como esto:
// Only method
Form1 frm = new Form1();
frm.Show();
Pero en VB.Net tenemos dos maneras de hacerlo:
' First common method
Form1.Show()
' Second method
Dim frm As New Form1()
frm.Show()
Mi la pregunta proviene de este primer método. ¿Qué es esto
Form1
, es una instancia deForm1
o la claseForm1
? Ahora, como mencioné anteriormente, el nombre del formulario es la instancia predeterminada en VB.Net. Pero también sabemos queForm1
es una clase definida enDesigner
, entonces, ¿cómo pueden los nombres ser iguales tanto para la instancia como para el nombre de clase? SiForm1
es una clase, entonces no hay un método (Estático/Compartido) llamado Mostrar(). Entonces, ¿de dónde viene este método?¿Qué diferencia tienen en la IL generada?
Y finalmente ¿por qué C no puede tener un equivalente de esto?
"Qué diferencia tienen en la IL generada": descargue y use .NET Reflector para descubrirlo usted mismo. Es tremendamente útil y gratis. –
No me gustaría esta "característica" en C# ... Es solo un truco para ocultar el hecho de que necesita crear una instancia de una clase para usarla. ¡Es realmente una idea terrible! Además, está muy poco documentado y tiene efectos secundarios inesperados y peligrosos (p. Ej., Cada tema tiene su propia "instancia predeterminada" del formulario te) –
@ThomasLevesque no quiero esa función ... solo quería saber cómo se hace y es posible ... :) –