En C#, el siguiente código no se compila:¿Por qué los nombres de miembros de C# no pueden ser iguales al nombre de tipo adjunto?
class Foo {
public string Foo;
}
La pregunta es: ¿por qué?
Más exactamente, entiendo que esto no se compila porque (cito): nombres
miembros no pueden ser el mismo que su tipo envolvente
Ok, está bien. Entiendo eso, no lo haré de nuevo, lo prometo.
Pero realmente no entiendo por qué el compilador se niega a tomar cualquier campo que tenga el mismo nombre que un tipo adjunto. ¿Cuál es el problema subyacente que me impide hacer eso?
Esta es probablemente la mejor y más completa respuesta aquí. En VB (creo que acabo de vomitar un poco en la boca), el ctor es Sub New() ... –
¿Quiere decir "evita crear un miembro" de la forma en que lo describe en la pregunta? Sí, esa es toda la razón de esta pregunta. Si te refieres a 'cadena pública Foo {get; set;} public void Foo() {}' entonces no, eso tampoco está permitido. – jcolebrand
La pregunta es si solo C# no lo permite o si el sistema de tipos .net no lo permite. Y supongo que es solo C#. – CodesInChaos