Privacy Policy Cookie Policy Terms and Conditions C sharp - Wikipedia

C sharp

Da Wikipedia, l'enciclopedia libera.

Il titolo di questa voce non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è C#         .
Nota disambigua - Se stai cercando la nota Do diesis nella notazione musicale in uso nei paesi di lingua inglese e tedesca, vedi Scala musicale.

Il C# (si pronuncia C sharp, sharp in inglese significa "in gamba" o più semplicemente diesis) è un linguaggio di programmazione object-oriented sviluppato da Microsoft all'interno dell'iniziativa .NET, e successivamente approvato come standard ECMA. Lo C# è uno dei pochi linguaggi di programmazione che può essere definito completamente orientato agli oggetti. La sintassi dello C# si prende spunto da quella del C++ e da quella dello Java, ed a Visual Basic per gli strumenti di programmazione visuale e per la sua semplicità (meno simbolismo rispetto a C++, meno elementi decorativi rispetto a Java).

Indice

[modifica] 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 è stato infatti 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, espongono esplicitamente caratterisitche proprie del .NET framework.

[modifica] Differenze con il C/C++

In confronto al C od al C++ il linguaggio ha subito una serie di modifiche volte principalmente ad evitare quegli errori tipici 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.
  • Come in Java, è possibile ereditare da una sola classe (diversamente da come avviene in C++) ma è possibile implementare un numero indefinito di interfacce.
  • Le sole conversioni implicite che sono 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 "templates" (tipici del C++) ma nella versione 2.0 sono stati introdotti i "generics".

[modifica] Differenze con Java

Sebbene C# sia ritenuto simile a Java, esistono alcune importanti differenze fra i due linguaggi:

  • Java non gestisce le proprietà di una classe.
  • Java non permette il sovraccarico (overload) degli operatori.
  • 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# supporta gli indicizzatori ed i delegati.
  • C# supporta le strutture; blocchi di memoria che non derivano dalla classe object e che sono memorizzati nello stack (value-type).

Come Java ha i suoi package anche nel C# possiamo ritrovare una serie di classi già sviluppate per l'interazione con i vari ambienti, Front End, Database, Xml e altri. Questo è il .NET framework, del quale utilizza una serie di librerie di classi che gli permettono l'accesso alle funzionalità del sistema. In C# quello che in Java è chiamato package viene chiamato namespace o "spazi di nomi". Le classi sono organizzate all'interno di una serie di namespaces che raggruppano le classi con funzionalità simili; ad esempio System.Windows.Forms per la gestione delle finestre di tipo "Forms", System.Xml per l'elaborazione di XML e System.Data per l'accesso alle basi dati.

Un ulteriore livello di organizzazione è costituito dagli "assembly". Un assembly può essere un singolo file od una serie di files linkati fra di loro. Un assembly può avere al suo interno diversi spazi di nomi.

[modifica] Esempi

[modifica] Hello world!

Hello, world! Il seguente esempio stampa il testo "Hello World".

 using System;
 class HelloWorldApp
 {
   public static void Main()
   {
     Console.WriteLine("Hello World");
   }
 }

[modifica] Definizione di classe

Il seguente esempio definisce una classe di nome persona che espone una proprietà nome il cui valore viene memorizzato nella variabile m_nome.

 using System;
 class ClasseUno
 {
   private string m_nome;
   
   public string Nome
   {
     get
     {
       return m_nome;
     }
     
     set
     {
       m_nome = value;
     }
   }                            
 }

Da notare che il linguaggio C# risulta essere uno strumento sintattico per l'utilizzo delle librerie presenti nei namespace del Framework .NET di Microsoft. A parte le strutture interne al linguaggio, il programmatore C# deve fare riferimento alle librerie, anche per la gestione dell'I/O, come del resto in C e C++. Nell'esempio presentato infatti viene utilizzata la direttiva using per l'implementazione del namespace System dal quale sarà poi utilizzata il metodo WriteLine della classe Console per mandare in output a video la scritta "Hello World".

[modifica] Standardizzazione

Microsoft ha sottoposto C# ad ECMA per una standardizzazione formale. Nel dicembre del 2001 ECMA ha rilasciato "ECMA-334 C# Language Specification". C# è diventato uno standard ISO nel 2003 (ISO/IEC 23270).

Esistono implementazioni indipendenti di .NET e del C#, fra cui il progetto Mono di Ximian e dotGNU & Portable.NET della Free Software Foundation.

Recentemente Microsoft ha introdotto, nella versione 2.0 del framework, i "generics", le "partial-class" ed altre nuove funzionalità. È stata proposta la standardizzazione ECMA/ISO anche per queste funzionalità, ma allo stato attuale non fanno parte della definizione standard del linguaggio.

[modifica] Collegamenti esterni

Principali linguaggi di programmazione (tutti)

Ada | ALGOL | APL | Awk | BASIC | C | C++ | C# | COBOL | Delphi | Eiffel | Fortran | Haskell | IDL | Java | JavaScript | J# | Lisp | LOGO | ML | Objective C | O'Caml | Pascal | Perl | PHP | PL/I | PLaSM | Prolog | Python | Ruby | SAS | Scheme | sh | Simula | Smalltalk | SQL | Visual Basic

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu