Skinny site

... un modo di esprimersi

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Code Snippets C# Una valida alternativa all'oggetto string

Una valida alternativa all'oggetto string

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 
Per chi come me proviene dall'abiente Visul Basic è abituato alla gestione delle stringhe in modo molto semplice e veloce, bastava definire una variabile string e su questa svolgere tutte le operazioni che si volevano concatenando risultati fra loro e facendo tutte le capriole possibili e immaginabili. D'altra parte in VB non era possibile fare diversamente, le alternative ad una simile comodità non erano neanche da prendere in considerazione. Nella nuova tecnologia .Net, Microsoft a pensato bene di migliorare la gestione delle stringhe, vi chiederete cosa avranno fatto per migliorare una gestione così comoda? Non tutti sanno che le la comodità ha un prezzo e in alcune circostanze il prezzo potrebbe anche essere salato. Vediamo un po' di cosa di tratta. Per Visual Studio .Net, Microdoft ha migliorato la gestione delle stringhe introducendo 2 classi:
  1. la classe string che si trova nel namespace System
  2. e la classe StringBuilder che si trova nel namespace System.Text.
La prima è quella che più assomiglia alla vecchia gestione delle stringhe e ha le seguenti caratteristiche:
  • Rappresenta una serie immutabile di caratteri. Questo significa che una volta che l' oggetto è stato creato, il suo valore un può essere modificato. Metodi che sembrano modificare una stringa restituiscono una NUOVA stringa contenente le modifiche, un simile comportamento causa un rallentamento dell'elaborazione e uno spreco di risorse. In fondo uno può pensare che si tratti di problemi marginali e trascurabili ma quando si iniziano a concatenare molte stringhe (per esempio quando si creano delle query SQL dinamiche), utilizzando l'oggetto string ogni concatenzaione crea un nuovo oggetto. Inoltre se il nostro programma gira in un ambiente web dove le utenze possono essere migliaia, un lieve spreco di risorse moltiplicato per ogni singolo utente potrebbe rendere anticipatamente insufficente il server che ospita l'applicazione.
La seconda classe è stata realizzata per risolvere i problemi sopra descritti e ha le seguenti caratteristiche:
  • Rappresenta una serie mutabile di caratteri.
  • Questa classe rappresenta una stringa come fosse un oggetto il cui valore è una sequenza variabile di caratteri. Questo valore è detto mutabile perchè può essere modificato una volta che è stato creato.
  • Un oggetto StringBuilder può riservare pi memoria di quella che l'insieme dei caratteri necessita, quando il valore di una istanza supera la dimensione iniziale l'oggetto StringBuilder espande automaticamente lo spazio da riservare alla stringa. La capacità predefinita è impostata a 16, e la massima capacità è fissata Int32.MaxValue.
  • Un ArgumentOutOfRangeException è ritornato se la capacità di memoria richiesta e più grande della sua massima capacità.
Faccio qui un esempio:
//Istruzioni più efficenti
StringBuilder sTemp = new StringBuilder();
sTemp.Append("INSERT INTO TABLE (CAMPO_1, CAMPO_2, CAMPO_3) VALUES(");
sTemp.Append("'" + value1 + "',");
sTemp.Append("'" + value2 + "',");
sTemp.Append("'" + value3 + "')");

//Istruzioni meno efficenti
string sTemp = new string();
sTemp = "INSERT INTO TABLE (CAMPO_1, CAMPO_2, CAMPO_3) VALUES(";
sTemp += "'" + value1 + "',";
sTemp += "'" + value2 + "',";
sTemp += "'" + value3 + "')";
Ultimo aggiornamento Domenica 10 Agosto 2008 13:04  

Google Analytics Tracking Module