English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجهة نحو الأنواع (OOP)

StringBuilder في C#

في C#، نوع الأنواع غير القابلة للتغيير. هذا يعني أن الأنواع بعد إنشائها لا يمكن تعديلها. على سبيل المثال، سيتخذ النوع الجديد "Hello World!" مساحة ذاكرة على الذاكرة. الآن، عن طريق تغيير النوع الأساسي من "Hello World!" إلى "Hello World! من Tutorials Teacher" سيتم إنشاء نوع جديد في ذاكرة الذاكرة، وليس تعديل النوع الأصلي في نفس عنوان الذاكرة. إذا تم تعديل النوع الأصلي عن طريق استبدال، إضافة، حذف أو إدراج أنواع جديدة عدة مرات في النوع الأصلي، فإن هذا السلوك سيؤثر على الأداء.

توزيع الـ memory لـ obj String

لحل هذه المشكلة، تم إدخال StringBuilder في C# في namespace System.Text. لا يخلق StringBuilder obj جديدًا في الـ memory، بل يتم توسيع الـ memory ديناميكيًا لتكون قادرًا على استيعاب النص المعدل.

توزيع الـ memory لـ obj StringBuilder

إنشاء obj StringBuilder

يمكنك إنشاء obj StringBuilder باستخدام keyword new ومرور النص الأولي. في المثال التالي، يتم عرض إنشاء obj StringBuilder.

using System.Text; // دعوة
            
StringBuilder sb = new StringBuilder(); // سيتم ضيف النص لاحقًا
// أو
StringBuilder sb = new StringBuilder("Hello World!");

أو يمكنك أيضًا استخدام constructor المعدل لتحديد كمية الأقصى لـ StringBuilder، كما يلي.

StringBuilder sb = new StringBuilder(50); // سيتم ضيف النص لاحقًا
// أو
StringBuilder sb = new StringBuilder("Hello World!", 50);

فيما يلي، يوزع C# على الـ heap الـ memory بترتيب متتابع ويوفر حتى 50 مساحة. عند الوصول إلى الكمية المحددة، يتم تضاعف الكمية تلقائيًا. يمكنك أيضًا استخدام properties capacity أو length لتعيين أو استخراج كمية StringBuilder.

يمكنك استخدام loop for للحصول على أو تعيين الحرف في موقع معين.

StringBuilder sb = new StringBuilder("Hello World!");
للحصول على أو تعيين الحرف في موقع معين، يمكنك استخدام loop for.
 Console.Write(sb[i]); // الناتج: Hello World!
}

استخراج النص من StringBuilder

StringBuilder ليس نصًا. استخدم طريقة ToString () لاستخراج النص من obj StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
var greet = sb.ToString(); // يعود بـ “Hello World!” "Hello World!"

إضافة / ضيف النص إلى StringBuilder

استخدام طريقة Append () لضيف النص في نهاية obj StringBuilder الحالي. إذا لم يحتوي StringBuilder على أي نص، سيضيفه. يضيف method AppendLine () علامة النهاية للسطر.

StringBuilder sb = new StringBuilder();
sb.Append("Hello ");
sb.AppendLine("World!");
sb.AppendLine(" C#");
Console.WriteLine(sb);
الناتج:
مرحبًا World!
مرحبًا C#

إضافة نص منسق إلى StringBuilder

استخدام طريقة AppendFormat() لتنسيق النص المقدم إلى نموذج محدد ثم إضافته.

StringBuilder sbAmout = new StringBuilder("مجموعكم هو ");
sbAmout.AppendFormat("{0:C} ", 25);
Console.WriteLine(sbAmout); // الناتج: مجموعكم هو 25.00 $

إدراج String في StringBuilder

استخدام طريقة Insert() لوضع نص في موقع معين في كائن StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Insert(5, " C#"); 
Console.WriteLine(sb); // الناتج: مرحبًا C# World!

إزالة النص في StringBuilder

استخدام طريقة Remove() لإزالة النص من النقطة المحددة حتى الطول المحدد.

StringBuilder sb = new StringBuilder("Hello World!", 50);
sb.Remove(6, 7);
Console.WriteLine(sb); // الناتج: مرحبًا

استبدال النص في StringBuilder

استخدام طريقة Replace() لتغيير جميع الاستبدالات المحددة من النص المحدد إلى النص المحدد.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#);
Console.WriteLine(sb); //الناتج: Hello C#!
نقاط يجب تذكرها:
  1. StringBuilder قابل للتغيير.

  2. أداء StringBuilder في إضافة عدة نصوص متعددة أسرع من string.

  3. عندما تحتاج إلى إضافة ثلاثة أو أربعة نصوص أو أكثر، استخدم StringBuilder.

  4. استخدم طريقة Append() لإضافة أو إضافة نص إلى كائن StringBuilder.

  5. استخدم طريقة ToString() للحصول على النص من كائن StringBuilder.