This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Parte IV dell'intervista con Anders Hejlisberg
Wednesday, 12 May 2004
Collegato agli altri 3, Ecco la parte 4 , roba molto interessante sui metodi virtuali in C# Questa è roba davvero interessante (beh, penso che lo sia!)... ecco una sezione su 'contratti' e metodi virtuali... il bit Java è SO true!
Bill Venners: Cosa intendi per contratto in entrata e in uscita?
Anders Hejlsberg: Il contratto in arrivo è quello che uso quando chiamo un metodo. Mi permette di ragionare su ciò che sono tenuto a fare prima di chiamare il metodo e su quello che è successo dopo il ritorno del metodo. Il contratto in uscita è quello che uso quando override un metodo. Se si guarda alla maggior parte delle API sono in realtà molto male a documentare ciò che si suppone di fare quando si override un metodo virtuale: Quali sono le invarianti prima di essere chiamati? Che cosa dovrebbe essere vero dopo? Quali metodi non si può chiamare dalla vostra implementazione? E così via. Penso che sia molto pericoloso dire che per impostazione predefinita tutti i metodi hanno aspetti sia in entrata che in uscita. È pericoloso fidarsi di tutti di scrivere una buona documentazione su quando overridere e quali sono gli invarianti quando sovrascrive.
Posso dimostrare a voi un problema di versione del mondo molto reale, uno che effettivamente vediamo ora dall'esperienza con Java. Ogni volta che spediscono una nuova versione delle librerie di classe Java, si verifica rottura. Ogni volta che introducono un nuovo metodo in una classe base, se qualcuno in una classe derivata aveva un metodo dello stesso nome, questo metodo è ora un override, tranne se ha un diverso tipo di ritorno, non compila più. Il problema è che Java, e anche C++, non cattura l'intento del programmatore rispetto al virtuale.