In .NET
proprietà dovrebbero essere cittadini di prima classe invece nel codice IL
getter di proprietà e setter sono implementate come get_
PropertyName e set_
PropertyName.Perché i setter e i getter della proprietà si scontrano con i metodi get_X e 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
}
uscita:
errore CS0082: Tipo 'SO.Property' si riserva già un utente chiamato 'Get_Value' con gli stessi tipi di parametri
errore CS0082: il tipo 'SO. Proprietà 'prenota già un membro chiamato' set_Value 'con gli stessi tipi di parametro
Perché il des le accensioni di .NET
decidono di utilizzare un nome che potrebbe interferire con il codice utente? Avrebbero potuto usare un carattere illegale (come Java utilizza $
per le cose di classe interna).
I formati get_Value() e set_Value() vanno anche contro le convenzioni di denominazione C# (http://msdn.microsoft.com/en-us/library/ms229045.aspx): "Non utilizzare caratteri di sottolineatura, trattini o qualsiasi altro carattere nonalfanumerico. " Potrebbe essere proprio a causa di questo problema, ma il punto è che non dovresti usare questo formato nel tuo codice C#. – alastairs