System.Text.StringBuilder

Ο τύπος δεδομένων string, είναι immutable στο .NET Framework. Πρακτικά αυτό σημαίνει, ότι όταν δημιουργήσουμε ένα string, τότε το περιεχόμενό του δεν μπορεί να αλλάξει. Δηλαδή, στο παρακάτω τμήμα κώδικα

string s = “Hello”;
s +=
” World”;

το s αρχικά δείχνει σε μία θέση μνήμης όπου είναι αποθηκευμένο το “Hello”. Με την προσθήκη (concatenation) του ” World”, το s πλέον δείχνει σε άλλη θέση μνήμης, στην οποία είναι αποθηκευμένο το “Hello World”. Συνεπώς, είναι προφανές ότι η επεξεργασία strings έχει κάποιο performance hit, ειδικά όταν έχουμε πολλά strings. Η λύση του .NET Base Class Library για αυτό είναι το object System.Text.StringBuilder

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StringBuilder : ISerializable

Το StringBuilder είναι mutable αντικείμενο, δηλαδή το περιέχόμενό του μπορεί να αλλάξει. Η χωρητικότητα του δεν μπορεί να είναι μεγαλύτερη από System.Int32.MaxValue, και η default είναι 16.

Μερικά properties

  • Capacity (read/write) : επιστρέφει/θέτει το μέγιστο αριθμό χαρακτήρων που μπορεί να χωρέσει το συγκεκριμένο instance
  • MaxCapacity (read) : επιστρέφει το μέγιστο αριθμό χαρακτήρων που μπορεί να χωρέσει το συγκεκριμένο instance
  • Length (read/write) : επιστρέφει/θέτει το μήκος του περιεχόμενου string

Μερικές συναρτήσεις

  • Append (με 18 overloads) : προσθέτει Unicode χαρακτήρες (ή και άλλους τύπους δεδομένων) στο τέλος του περιεχόμενου string
  • Insert (με 17 overloads) : τοποθετεί Unicode χαρακτήρες (ή και άλλους τύπους δεδομένων) σε συγκεκριμένο σημείο του περιεχόμενου string (περνιέται σαν παράμετρος)
  • Remove : σβήνει x χαρακτήρες από το περιεχόμενο string στο σημείο y (x,y παράμετροι)
  • Replace (με 3 overloads) : αντικαθιστά χαρακτήρες ή ενσωματωμένα strings

 Για να πάρουμε το περιεχόμενο string του StringBuilder, αρκεί να καλέσουμε την συνάρτηση .ToString() που κληρονομεί από το System.Object.

 Να τονιστεί ότι οι συναρτήσεις του StringBuilder επενεργούν στο ίδιο object, αντί να επιστρέφουν ένα καινούριο, όπως γίνεται στην περίπτωση του string.

Δηλαδή, για τύπο string γράφουμε

string s =“Hello Woorld”;
s = s.Replace(
“oo”,“o”);

Ενώ για StringBuilder γράφουμε 

StringBuilder s = new StringBuilder(“Hello Woorld”);
s.Replace(
“oo”,“o”);

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s