¿Objetos implícitamente instanciados en vb.net?

Estoy manteniendo una aplicación que tiene componentes tanto VB.NET como c #. Pensé que estos dos idiomas diferían solo en la sintaxis, pero he encontrado una característica extraña en VB.NET que no está presente en C #.

En VB.NET, tengo la siguiente clase:

Public Class bill_staff Inherits System.Windows.Forms.Form
    ....
End Class

Si quiero usar esta clase en C #, hago esto:

using (var frm = new bill_staff())
    frm.ShowDialog();

Sin embargo, en el código VB.NET, la clase se puede usar así:

bill_staff.ShowDialog();

ShowDialog Se define en los metadatos como este:

Public Function ShowDialog() As System.Windows.Forms.DialogResult

Así que en VB.NET, es posible llamar a un método de instancia en la clase. Por lo que puedo decir, esto parece crear implícitamente una nueva instancia de la clase, y luego llama al método en ese objeto. En C #, esto no es posible: los métodos estáticos deben llamarse en la clase y los métodos de instancia deben llamarse en los objetos.

No puedo encontrar ninguna información sobre esto en Internet. ¿Cómo se llama la característica, y es una buena práctica?

El proyecto se convirtió inicialmente desde VB6: ¿es una característica heredada extraña?

Respuestas a la pregunta(2)

Su respuesta a la pregunta