منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
Tips and tricks - رقم 1 - StringBuilder - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم مقالات C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=177)
+--- الموضوع : Tips and tricks - رقم 1 - StringBuilder (/showthread.php?tid=4740)



Tips and tricks - رقم 1 - StringBuilder - RaggiTech - 01-10-12

كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

عندما نقوم بدمج النصوص ، يلجأ الكثيرون منا لاستخدام المعامل + في C# أو المعامل & في VB.net بالشكل التالي - مثال اضافة امتداد البريد الإلكتروني :


كود :
[SIZE=3][FONT=Tahoma]//C#:[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]Label1.Text = Text1.Text + "@hotmail.com";[/FONT][/SIZE]

كود :
[SIZE=3][FONT=Tahoma]'VB.net:[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]Label1.Text = Text1.Text + "@hotmail.com";[/FONT][/SIZE]
إلا أن Visual Studio قدمت لنا طريقة أخرى لدمج النصوص باستخدام الفئة StringBuilder ، في مجال الأسماء System.Text.StringBuilder ، يمكن استخدامها لدمج النصوص بالشكل التالي :


كود :
[SIZE=3][FONT=Tahoma]//C#:[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]System.Text.StringBuilder mail = New System.Text.StringBuilder(Text1.Text);[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]mail.Append("@hotmail.com");[/FONT][/SIZE]

كود :
[SIZE=3][FONT=Tahoma]'VB.net:[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]Dim mail As New System.Text.StringBuilder(Text1.Text)[/FONT][/SIZE]
[SIZE=3][FONT=Tahoma]mail.Append("@hotmail.com")[/FONT][/SIZE]
الفارق بين الاثنين يكمن في ان stringbuilder يظل كما هو منذ لحظة انشاءه ، اما استخدام المعاملات + أو & فهو يقوم بعمل Object جديد من ال String مع كل عملية دمج .

والآن سنفترض مثال Loop تقوم بدمج عدد من النصوص ، وسنصور المقارنة مباشرة من كتاب .Net Gotachas ، حيث قام بعمل اختبار لعدد عمليات دمج ابتداء من 10 عمليات دمج وحتى 1000000 عملية دمج ، وقام بمقارنة الأداء بين استخدام StringBuilder او استخدام معاملات الدمج التقليدية ، مع ذكر زمن التنفيذ بالثانية لكل منهم .


لا تنسى ان 3562.933 ثانية تعني 59.4 دقيقة تقريباً ...
والآن ... هل ما زلت تستخدم & او + لدمج النصوص ؟؟؟

توفر الفئة stringbuilder ايضاً عمليات استبدال Replace وادراج Insert وحذف Remove وعمليات نصوص أخرى كثيرة ، يمكنك الاطلاع على أوجه كثيرة للمقارنة مدعومة بالرسوم البيانية من خلال هذا الرابط من Code Project :
http://www.codeproject.com/KB/cs/StringBuilder_vs_String.aspx

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .