ottobre 2007 Blog Posts
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - DictionaryBase class DictionaryBase class La classe astratta DictionaryBase fornisce un punto di partenza per l'implementazione di dizionari fortemente tipizzati.Ecco come è definita: [Serializable, ComVisible(true)]public abstract class DictionaryBase : IDictionary, ICollection, IEnumerable{ // Fields private Hashtable hashtable; // Utilizza un Hashtable al suo interno // Methods protected DictionaryBase(); public void Clear(); public void CopyTo(Array array, int index); public IDictionaryEnumerator GetEnumerator(); protected virtual void...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - CollectionBase class CollectionBase class La classe astratta CollectionBase fornisce un punto di partenza per l'implementazione di collection fortemente tipizzate.Ecco come è definita: [Serializable, ComVisible(true)]public abstract class CollectionBase : IList, ICollection, IEnumerable{ // Fields private ArrayList list; // Utilizza un ArrayList internamente // Methods protected CollectionBase(); protected CollectionBase(int capacity); public void Clear(); public IEnumerator GetEnumerator(); protected virtual void OnClear(); protected virtual void OnClearComplete(); protected...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - SortedList class SortedList La classe SortedList implementa le interfacce IDictionary, ICollection, IEnumerable e ICloneable. E' quindi a tutti gli effetti un dizionario. SortedList list = new SortedList();list["Andrea"] = 111111;list["Stefano"] = 222222;list["Alessandro"] = 333333; foreach (DictionaryEntry entry in list){ Console.WriteLine("Lo studente {0} è la matricola {1}", entry.Key, entry.Value);} La differenza rispetto a Hashtable è che gli oggetti al suo interno sono ordinati secondo un certo criterio e...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - Stack class - Queue class Stack e Queue La classe Stack e la classe Queue sono l'implementazione di due note strutture dati nel mondo informatico. La prima utilizza la tecnica LIFO (Last In First Out) per inserire ed estrarre gli elementi. La seconda invece utilizza la tecnica FIFO (First In First Out).Semplice utilizzo della classe Stack: Stack stack = new Stack(); stack.Push("Andrea"); // Inserimento in...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - Hashtable class - DictionaryEntry class - IDictionary interface and IDictionaryEnumerator interface - IEqualityComparer interface Hashtable La classe Hashtable permette di memorizzare coppie chiave/valore cioè una struttura dati di tipo dizionario.Vediamo che il suo utilizzo è molto semplice: Hashtable table = new Hashtable(); // creazione di una nuova tabella hash table.Clear(); // svuota la tabella hash table.Add(111111, "Andrea"); // inserisce una nuova coppia chiave/valoretable.Add(222222, "Stefano");table.Add(333333, "Giorgio");table.Add(444444,...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - ArrayList class - Collection interfaces - ICollection interface and IList interface - IEnumerable interface and IEnumerator interface - IComparer interface and IEqualityComparer interface - Iterators ArrayList class La classe ArrayList permette di creare una collezione di oggetti che possono essere ottenuti sulla base di un indice.Per inserire elementi in una lista è possibile utilizzare le funzioni Add e AddRange e Insert: ArrayList lista1 = new ArrayList();lista1.Add(1); ...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Exception Classes Exception Classes Le eccezioni sono un potente meccanismo per scrivere codice più robusto e manutenibile.Riprendiamo il codice di esempio utilizzato nel post "[70-536] - Generic Types": // Generica Pila con dimensioni limitatepublic class Pila<T>{ private int MAX; // numero massimo di elementi private int cont = 0; // numero corrente di elementi nella pila private T[] elementi; // vettore che conterrà gli elementi //...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Generic types Generic Types Constraints Quando viene compilato del codice generico, il compilatore lo analizza in modo da assicurare che il codice funzionerà per qualsiasi tipo esistente o che potrebbe essere definito in futuro. Questo penalizza molto il programmatore in quanto è costretto a utilizzare soltato i metodi della classe Object per tutti gli argomenti generici . Di fatto questo renderebbe i generics praticamente inutili. Per superare questa limitazione il CLR supporta i...
Area di riferimento
- Developing applications that use system types and collections
- Manage data in a .NET Framework application by using the .NET Framework 2.0 system types
- Generic types
Generic Types
I generics sono un meccanismo offerto dal CLR e supportato dalla sintassi dei linguaggi di programmazione che fornisce una modo di riutilizzare algoritmi.
Ritengo che i generics siano una delle caratteristiche del framework 2.0 che maggiormente ha incrementato la produttivita dello sviluppatore.
L'idea alla base è avere la possibilità di definire algoritmi indipendenti dal tipo di dato su cui lavorano, permettendo di riutilizzarne la logica.
Il paradigma di programmazione generica permette anche di creare...
Voglio mostrare alcuni esempi di codice Javascript per illustrare alcuni aspetti poco noti e interessanti del linguaggio. L'importanza della parola chiave var: function pensa(){ messaggio = "Ciao a tutti";} function parla(){ if ( typeof(messaggio) == 'undefined' ) { alert("Messaggio non definito"); } else { alert("Andrea dice: " + messaggio); }}pensa();parla(); // output: "Andrea dice: Ciao a tutti" Non utilizzare la parola chiave var all'interno della funzione pensa(), comporta la creazione di una variabile globale di nome messaggio la quale sarà quindi accessibile in qualsiasi punto dell'applicazione.All'interno di pensa() messaggio sarà quindi una variabile ben definita e quindi verrà...