CTS - Common Type System

.::Home::.

.::Introduzione::.

1.Panoramica

4.DataBase

.::Presentazioni PPT::.

.::Link::.

.::DownLoad::.

 

Il runtime utilizza un nuovo sistema di tipi unificato in grado di esprimere la semantica dei moderni linguaggi di programmazione. Tale sistema definisce un insieme standard di tipi di dato e di regole necessarie per la realizzazione di nuovi tipi. Il runtime è in grado di capire come creare ed eseguire tali tipi. I compilatori del .NET Framework utilizzano i servizi del runtime per definire i tipi di dato, gestire gli oggetti ed eseguire chiamate a metodi invece di utilizzare i metodi specifici dello strumento o del linguaggio.

L'utilizzo di un sistema di tipi unificato offre come risultato una profonda integrazione tra i linguaggi. Il codice scritto in un linguaggio può ereditare l'implementazione da classi scritte in un altro linguaggio; le eccezioni possono essere sollevate dal codice scritto in un linguaggio e gestite da codice scritto in un altro, ed operazioni come il debugging ed il profiling operano in modo trasparente indipendentemente dal linguaggio utilizzato per scrivere il codice. Ciò significa che gli sviluppatori non hanno più bisogno di creare versioni differenti delle proprie librerie per ogni linguaggio di programmazione o compilatore, e che, per quanto riguarda le librerie di classe, non sono più limitati a quelle sviluppate per il linguaggio di programmazione utilizzato.

Il CTS supporta sia i linguaggi orientati agli oggetti come Java e C++ che quelli procedurali come il C e agisce su due tipi di entità: Reference e Value.

I Value sono i tipi atomici come integer e char, mentre gli Reference sono entità auto definite contenenti sia metodi che variabili.

Reference e Value rispettano la seguente gerarchia:

  • I tipi possono essere Value Type o Reference Type.
  • I Value Type descrivono valori che sono rappresentati come sequenze di bit e possono essere ulteriormente divisi in tipi "incorporati" (built in) come Integer e Float e in "definibili dall'utente" (user defined).
  • I Reference Type descrivono valori che sono rappresentati come la locazione di una sequenza di bit possono essere divisi in quattro sotto categorie:
  • Self Describing
  • Pointer Type, ulteriormente divisibili in
    • Function Pointer
    • Managed Type
    • Unmanaged Type
  • Interface Type
  • Built-In

 I Reference Type sono sempre allocati nella dall'heap gestito (managed heap) e il nuovo operatore restituisce l'indirizzo di memoria dell'oggetto, ovvero l'indirizzo che fa riferimento ai bit dell'oggetto. Ci sarebbero alcune considerazioni legate alle prestazioni da fare quando si lavoro con i Reference Type, ad esempio il fatto che la memoria debba essere allocata dal managed heap fa si che possa essere necessaria una garbage collection (Per maggiori dettagli vedere la pagina dedicata alla GC e allo statement using nella terza parte del tutorial).

Il CLR supporta anche tipi leggeri chiamati Value Type. Gli oggetti Value Type sono solitamente allocati nello stack di un thread (anche se possono anche essere incorporati in un oggetto Reference Type) e la variabile rappresentante l'oggetto non contiene un puntatore ad un oggetto, ma contiene il valore dell'oggetto stesso. Gli oggetti Value Type non sono sotto il controllo del Garbage Collector così da ridurre la pressione nel managed heap e da ridurre il numero delle collection richieste da una applicazione in tutta la sua durata.

 


Clicca per ingrandire

I tipi Value possono essere convertiti in tipi Reference con un processo innovativo chiamato Boxing dei Value.

Il processo inverso è chiamato invece Unboxing.

Le regole di passaggio da un tipo all'altro, ad esempio da un char ad un integer sono anch'esse comprese nel CTS.

 

.::^top^::.

(2002) A cura di Carlo Becchi