- 29 Luglio 2010
- 271
- 0
- Miglior risposta
- 0
- Cos'è il C#?
Il C# (si legge C sharp) è un linguaggio di programmazione object-oriented sviluppato da Microsoft all'interno dell'iniziativa .NET, e successivamente approvato come standard ECMA. La sintassi del C# prende spunto da quella del Delphi (hanno il medesimo autore, ovvero Anders Hejlsberg), del C++, di Java e di Visual Basic per gli strumenti di programmazione visuale e per la sua semplicità (meno simbolismo rispetto a C++, meno elementi decorativi rispetto a Java).
- Caratteristiche del linguaggio
C# è, in un certo senso, il linguaggio che meglio degli altri descrive le linee guida sulle quali ogni programma .NET gira; questo linguaggio infatti è stato creato da Microsoft specificatamente per la programmazione nel Framework .NET. I suoi tipi di dati "primitivi" hanno una corrispondenza univoca con i tipi .NET e molte delle sue astrazioni, come classi, interfacce, delegati ed eccezioni, sono particolarmente adatte a gestire il .NET framework.
- Differenze con il C/C++
In confronto al C o al C++ il linguaggio ha subito una serie di modifiche volte principalmente ad evitare errori tipici e ambiguità della programmazione C:
- I puntatori possono essere utilizzati solo in particolari blocchi di codice marcati come "unsafe".
- In molte operazioni aritmetiche vengono controllati eventuali "overflow".
- Gli oggetti dinamici non vengono deallocati esplicitamente; la loro rimozione viene gestita automaticamente (implicitamente) dal "garbage-collector" quando non esistono più riferimenti a tali oggetti. Questa gestione evita i due problemi ben noti dei dangling pointer e del memory leak, anche se con un'ovvia riduzione delle prestazioni.
- Come in Java, è possibile ereditare da una sola classe (diversamente da quanto avviene in C++) ma è possibile implementare un numero indefinito di interfacce.
- Le sole conversioni implicite consentite sono quelle "safe", ovvero che non espongono al rischio di perdita di dati causata dalla diversa tipologia di dato. Ad esempio non sono consentite conversioni implicite fra integer e boolean o fra enumerati ed integer.
- C# non possiede i "template" (tipici del C++) ma nella versione 2.0 sono stati introdotti i "generic".
- Differenze con Java
Sebbene C# sia ritenuto simile a Java, esistono alcune importanti differenze fra i due linguaggi:
- Java non ha costrutti specifici per definire le proprietà di una classe (getter e setter).
- Java non permette blocchi di codice "unsafe" che consentono di gestire i puntatori.
- Java utilizza i commenti Javadoc-sintax per generare la documentazione dal codice sorgente, mentre C# utilizza la sintassi XML nei commenti per lo stesso scopo.
- C# non obbliga la gestione delle eccezioni (handle or declare), in Java alcuni tipi di eccezioni, le checked exceptions vanno gestite.
- C# supporta gli indicizzatori ed i delegati.
- C# supporta le strutture, le cui istanze sono memorizzate nello stack e che utilizzano implicitamente ed obbligatoriamente 'ValueType' (che è derivato da object) quale tipo base.
- C# ha la possibilità di dichiarare i metodi virtual tramite l'apposita keyword virtual; a differenza di Java, dove i metodi sono forzatamente virtual di default.
Fonte:
Il C# (si legge C sharp) è un linguaggio di programmazione object-oriented sviluppato da Microsoft all'interno dell'iniziativa .NET, e successivamente approvato come standard ECMA. La sintassi del C# prende spunto da quella del Delphi (hanno il medesimo autore, ovvero Anders Hejlsberg), del C++, di Java e di Visual Basic per gli strumenti di programmazione visuale e per la sua semplicità (meno simbolismo rispetto a C++, meno elementi decorativi rispetto a Java).
- Caratteristiche del linguaggio
C# è, in un certo senso, il linguaggio che meglio degli altri descrive le linee guida sulle quali ogni programma .NET gira; questo linguaggio infatti è stato creato da Microsoft specificatamente per la programmazione nel Framework .NET. I suoi tipi di dati "primitivi" hanno una corrispondenza univoca con i tipi .NET e molte delle sue astrazioni, come classi, interfacce, delegati ed eccezioni, sono particolarmente adatte a gestire il .NET framework.
- Differenze con il C/C++
In confronto al C o al C++ il linguaggio ha subito una serie di modifiche volte principalmente ad evitare errori tipici e ambiguità della programmazione C:
- I puntatori possono essere utilizzati solo in particolari blocchi di codice marcati come "unsafe".
- In molte operazioni aritmetiche vengono controllati eventuali "overflow".
- Gli oggetti dinamici non vengono deallocati esplicitamente; la loro rimozione viene gestita automaticamente (implicitamente) dal "garbage-collector" quando non esistono più riferimenti a tali oggetti. Questa gestione evita i due problemi ben noti dei dangling pointer e del memory leak, anche se con un'ovvia riduzione delle prestazioni.
- Come in Java, è possibile ereditare da una sola classe (diversamente da quanto avviene in C++) ma è possibile implementare un numero indefinito di interfacce.
- Le sole conversioni implicite consentite sono quelle "safe", ovvero che non espongono al rischio di perdita di dati causata dalla diversa tipologia di dato. Ad esempio non sono consentite conversioni implicite fra integer e boolean o fra enumerati ed integer.
- C# non possiede i "template" (tipici del C++) ma nella versione 2.0 sono stati introdotti i "generic".
- Differenze con Java
Sebbene C# sia ritenuto simile a Java, esistono alcune importanti differenze fra i due linguaggi:
- Java non ha costrutti specifici per definire le proprietà di una classe (getter e setter).
- Java non permette blocchi di codice "unsafe" che consentono di gestire i puntatori.
- Java utilizza i commenti Javadoc-sintax per generare la documentazione dal codice sorgente, mentre C# utilizza la sintassi XML nei commenti per lo stesso scopo.
- C# non obbliga la gestione delle eccezioni (handle or declare), in Java alcuni tipi di eccezioni, le checked exceptions vanno gestite.
- C# supporta gli indicizzatori ed i delegati.
- C# supporta le strutture, le cui istanze sono memorizzate nello stack e che utilizzano implicitamente ed obbligatoriamente 'ValueType' (che è derivato da object) quale tipo base.
- C# ha la possibilità di dichiarare i metodi virtual tramite l'apposita keyword virtual; a differenza di Java, dove i metodi sono forzatamente virtual di default.
Fonte:
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Ultima modifica da un moderatore: