En .NET
propiedades se supone que son ciudadanos de primera clase sin embargo, en los IL
captadores de propiedad de código y definidores se implementan como get_
PropertyName y set_
PropertyName.¿Por qué los ajustadores de propiedades y getters chocan con los métodos get_X y set_X?
class Property
{
int Value { get { return 42; } }
int get_Value() { return 6 * 9; }
void set_Value(int i) { } // Error even though Value is a read only property
}
Salida:
error CS0082: Tipo 'SO.Property' Ya se reserva un miembro llamado 'Get_Value' con los mismos tipos de parámetros
CS0082 de error: Tipo 'SO. Propiedad 'ya se reserva un miembro llamado' set_Value 'con los mismos tipos de parámetros
¿Por qué la des Los igners de .NET
deciden usar un nombre que pueda entrar en conflicto con el código de usuario? Podrían haber usado un carácter ilegal (como Java usa $
para cosas internas).
Los formatos get_Value() y set_Value() también van en contra de las Convenciones de nomenclatura de C# (http://msdn.microsoft.com/en-us/library/ms229045.aspx): "No utilice guiones bajos, guiones o cualquier otro personaje no alfanumérico ". Puede ser precisamente debido a este mismo problema, pero el punto es que no debe utilizar este formato en su código C#. – alastairs