Da una prospettiva di programmazione di base reale, in C # se è necessario un metodo per ottenere, derivare, produrre, creare un'istanza o altrimenti comunicare qualcosa al chiamante, si utilizza una funzione con il tipo di ritorno appropriato.
Se hai bisogno di un metodo per fare solo qualcosa e non hai bisogno di nulla da esso, usa un vuoto.
Troppo lungo; Non leggere le informazioni:
Funzioni restituiscono il controllo al chiamante al completamento insieme a un valore o riferimento a un tipo di prodotto; un vuoto è una funzione di caso speciale che non ha prodotto corrispondente ... è una specie del tipo equivalente di null.
Alcune lingue distinguono in modo specifico tra funzioni (metodi che restituiscono un valore) e subroutine (metodi che non restituiscono un valore). Le lingue basate su C usano invece "void" per distinguere tra loro.
In C # in particolare, void è mappato internamente a una struct con alcuni strani comportamenti di compilazione forzata; non puoi davvero usare questo tipo per qualcosa di utile ma se stai facendo riflessioni potresti notarlo e pensare "hrm?":
link
Eric Lippert, fino a poco tempo fa uno dei principali sviluppatori del team di compilatori C #, aveva qualche cosa interessante da dire sul vuoto alcuni anni fa; potrebbe fornire alcune informazioni per te:
link
Si noti che è possibile simulare le funzioni usando i vuoti, tramite i parametri out o ref, ma ciò sarebbe inutilmente prolisso e non oso essere inelegante; le funzioni sono molto più pulite e più facili da leggere e scrivere.
Personalmente, quando uso un vuoto, di solito è per un metodo privato o protetto o per seguire un modello di progettazione. Io tendo a favorire le funzioni per i metodi pubblici; anche se solo per restituire true / false per consentire un ciclo di feedback per i chiamanti o per assistere nel test dell'unità.