../images/Emo124.gif ה-Namespace השבועי../images/Emo70.gif
והפעם, System.Text. מרחב שמות זה עוסק בשני עניינים הקשורים בטקסט - מימוש למחרוזת-טקסט הניתנת לשינוי (mutable) וקידודים.
המחלקה StringBuilder ה-StringBuilder מציגה פונקציונליות מאוד דומה לזו של מחרוזת רגילה, קיים הבדל בסיסי ביניהן. מחרוזת ה"רגילה" (System.String) אינה משתנה כשמבצעים עליה פעולה כלשהי, אלא נוצר אובייקט System.String חדש בזיכרון. בגלל יצירת אובייקט מחרוזת חדש כל פעם, נוצר מצב שבו פעולות רבות על מחרוזת אחת (כמו Trim, Replace, וכו') יגררו בזבוז זכרון, ולכן עבודה מיותרת ל-Garbage Collector. כדי לפתור בעיה זו, נוצר ה-StringBuilder. ב-StringBuilder, כל הפעולות נעשות על אובייקט דמוי-מחרוזת. כדי לחבר מחרוזות, משתמשים במתודות Append/AppendFormat. המתודה ToString ממירה את המחרוזת המוכלת ב-StringBuilder לאובייקט מסוג System.String.
מחלקות הקידוד בקידודים משתמשים בדרך כלל כאשר רוצים לקרוא מ/אל קבצים (אבל לא רק). קובץ, כזכור, הוא מערך של בתים, ולא מחרוזת. לכן, כדי שלבתים האלו תהיה משמעות מסוימת קיים צורך להמיר למחרוזת. את זה צריך לעשות ע"י קידוד מסוים, כי ניתן לייצג תוים של מחרוזת ע"י מערך של בתים בכמה דרכים שונות. לדרכים האלו קוראים קידודים. המחלקה הבסיסית לטיפול בקידודים היא Encoding. לכל קידוד יש codepage מסוים, ושם. כדי ליצור instance של המחלקה הזאת, אפשר להשתמש בקונסטרקטור שמקבל פרמטר Int32 אחד שמייצג את ה-codepage של הקידוד הרצוי. לחילופין, ניתן להשתמש במתודה הסטטית GetEncoding, שמקבלת codepage או שם של קידוד. דוגמא:
שבת שלום
והפעם, System.Text. מרחב שמות זה עוסק בשני עניינים הקשורים בטקסט - מימוש למחרוזת-טקסט הניתנת לשינוי (mutable) וקידודים.
Encoding hebrewWindowsEncoding = new Encoding(1255); //or Encoding hebrewWindowsEncoding = Encoding.GetEncoding("windows-1255"); //if we want to use hebrew DOS encoding, for example: Encoding hebrewDosEncoding = Encoding.GetEncoding("DOS-862");
למחלקה Encoding יש שתי מתודות חשובות - GetBytes ו-GetString. הראשונה, ממירה מחרוזת (שבדוט נט היא תמיד unicode) למערך של בתים בקידוד המסוים שבחרנו, והשניה ממירה מערך של בתים למחרוזת Unicode של דוט נט. קיימות 4 מחלקות מוכנות מראש המייצגות קידודים מסוגים נפוצים - UnicodeEncoding, UTF8Encoding, UTF7Encoding ו-ASCIIEncoding. כולן יורשות מ-Encoding, ומוסיפות פונקציונליות ייחודית לקידוד שהן מייצגות. בנוסף, System.Text מכיל שתי מחלקות אבסטרקטיות - Encoder ו-Decoder. המחלקה Encoder ממירה תוים למערך של בתים, והמחלקה Decoder ממירה מערך של בתים לתוים.