C sharp: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullata la modifica di ~2025-28382-52 (discussione), riportata alla versione precedente di Emayeah Etichetta: Rollback |
|||
(3 versioni intermedie di 3 utenti non mostrate) | |||
Riga 9:
|tipizzazione = [[Tipizzazione statica|Statica]], [[Tipizzazione dinamica|Dinamica]], [[Tipizzazione forte|Forte]], [[Sicurezza rispetto ai tipi|Sicura]]
|specifiche =
|estensione = .cs, .
|influenzato_da = [[Delphi]], [[C++]], [[Java (linguaggio di programmazione)|Java]], [[Eiffel (linguaggio)|Eiffel]], [[Haskell (linguaggio)|Haskell]], [[ML (linguaggio di programmazione)|ML]]
|ha_influenzato = [[D (linguaggio)|D]], [[F Sharp|F#]], [[Java (linguaggio di programmazione)|Java]], [[TypeScript]]
Riga 139:
* Secondo le consuetudini dei linguaggi orientati agli oggetti, le specifiche sono di regola raggruppate in ''metodi'' (ovvero funzioni), i ''metodi'' sono raggruppati in ''classi'', e le ''classi'' sono raggruppate nei [[namespace]].
=== Differenze
Rispetto a [[C (linguaggio)|C]] o a [[C++]] il linguaggio C# presenta varie modifiche, volte principalmente ad evitare errori tipici e ambiguità della programmazione in [[C (linguaggio)|linguaggio C]]:
Riga 146:
* Gli oggetti dinamici non vengono deallocati esplicitamente, ma viene gestita automaticamente e implicitamente dal [[garbage collection|garbage-collector]] quando non esistono più riferimenti a tali oggetti. Questo sistema evita i due problemi dei ''[[dangling pointer]]'' e del ''[[memory leak]]'', anche se con una riduzione delle prestazioni.
* Come in [[Java (linguaggio di programmazione)|Java]] è possibile ereditare da una sola classe, diversamente da quanto avviene in [[C++]], ma è possibile implementare un numero indefinito di ''interfacce''. A differenza del [[C++]], non è consentita l'ereditarietà di tipo ''private''.
* Le sole conversioni implicite consentite sono quelle ''safe'', ovvero che non espongono al rischio di perdita di dati causata
* C# non dispone dei ''template'' tipici del [[C++]], ma nella versione 2.0 sono stati introdotti i ''generic''.
=== Differenze
Sebbene C# sia ritenuto simile a [[Java (linguaggio di programmazione)|Java]], esistono alcune importanti differenze fra i due linguaggi. Quella maggiormente visibile è certamente la presenza in C# di molti costrutti, alcuni dei quali chiaramente derivati dal [[C++]], che in [[Java (linguaggio di programmazione)|Java]] sono stati deliberatamente vietati. I sostenitori del C# affermano che tutto ciò rende il codice più chiaro, mentre i sostenitori di [[Java (linguaggio di programmazione)|Java]] affermano che proprio la presenza di un gran numero di parole-chiave e di regole da ricordare rende il linguaggio più difficile da imparare e utilizzare.
|