2012-10-17 12 views
12

In C# è possibile sovraccaricare gli operatori, ad es. + e *. Nella loro interpretazione matematica, questi operatori hanno un ordine di precedenza ben definito.Sovraccarico e precedenza dell'operatore

Questo ordine viene mantenuto in caso di sovraccarico, cambia in qualche modo deterministico o è possibile sovraccaricare anche l'ordine di precedenza?

risposta

15

Se sovraccarichi un operatore, avrà sempre la precedenza rispetto all'implementazione predefinita. Tuttavia, non è possibile modificare la precedenza dell'operatore stesso, quindi verrà mantenuto come predefinito. Maggiori informazioni su MSDN.

citazioni rilevanti:

definiti dall'utente implementazioni operatore hanno sempre la precedenza rispetto implementazioni operatore predefiniti: Solo quando esistono saranno i predefiniti implementazioni operatore essere considerate non applicabili implementazioni operatori definiti dall'utente.

e

dichiarazioni dell'esercente definiti dall'utente non possono modificare la sintassi, precedenza, o associatività di un operatore. Ad esempio, l'operatore/ è sempre un operatore binario, ha sempre il livello di precedenza specificato in Section 7.2.1 ed è sempre associato a sinistra.

4

Il sovraccarico non cambia la precedenza.

La precedenza dell'operatore viene impostata dal compilatore e non può essere modificata, almeno non senza la personalizzazione del compilatore.