In C #, hai campi e hai anche proprietà, che sono fondamentalmente campi incapsulati. Le proprietà sono comunemente implementate usando i campi (e la lingua ha una scorciatoia per farlo succintamente), ma non è necessario.
Quindi, puoi scrivere entrambi:
o.Field = 42;
o.Property = 42;
Ma quest'ultimo in realtà compila per una chiamata a un metodo setter:
o.set_Property(42);
Un'altra differenza tra campi e proprietà è che le proprietà non consentono alcune operazioni, come l'utilizzo di ref .
È simile a delegati ed eventi: gli eventi sono campi delegati incapsulati. Gli eventi vengono comunemente implementati utilizzando i campi delegati (e la lingua ha una scorciatoia per farlo in modo succinto), ma non è necessario.
Inoltre, puoi scrivere entrambi:
o.DelegateField += Handler;
o.Event += Handler;
Ma quest'ultimo in realtà si compila in una chiamata a un metodo di aggiunta:
o.add_Event(Handler);
Un'altra differenza è che gli eventi non ti consentono la maggior parte delle operazioni, come l'assegnazione o il richiamo di esse (ad eccezione del richiamo di eventi di tipo campo dalla stessa classe dichiarante).
Quindi, ora la domanda è: perché puoi usare += con i campi delegati? È perché puoi utilizzare + per combinare i delegati. Ciò significa che o.DelegateField += Handler; è solo una scorciatoia per o.DelegateField = o.DelegateField + Handler; .
Con gli eventi, non puoi leggere o assegnarli a loro, quindi la sintassi di += di stenografia è l'unica opzione.