decir que tengo:¿Por qué no se puede llegar a un miembro estático a través de un nombre de instancia?
class Test
{
public static int Hello = 5;
}
Obviamente, esto funciona:
int j = Test.Hello;
Pero ¿por qué esto no funciona?
Test test = new Test();
int j = test.Hello;
La instancia no podía tener un miembro nombrado por igual, así que no veo cómo esto podría ser ambigua o no se puede resolver de un compilador.
¿Alguien alguna idea de por qué es esto?
EDIT: ¿Hay alguna otra razón técnica por la que esto debería ser diferente a los diseñadores de idiomas que eligen esto para la legibilidad/claridad/estética/etc.?
Un giro cerebral interesante: ¿Qué pasará si nombra la variable de instancia 'Test' (es decir, use el mismo nombre que la clase)? Compruebe la respuesta aquí: http://blogs.msdn.com/ericlippert/archive/2009/07/06/color-color.aspx –
con los métodos de extensión de C# 3.0 puede obtener exactamente esto. Estática que se puede llamar como métodos de instancia. Sin embargo, solo funciona para métodos que no son accesorios. –
@AZ: Solo este fin de semana leo sobre ellos y realmente lo hacen exactamente como lo describo. Aparentemente, los puntos positivos superan los puntos negativos. – Toad