تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة ::: StringBuilder
#1
كاتب الموضوع : BADRMEDIA



المتغير النصي String واحد من أكثر أنواع البيانات ( Data Type ) استخداماً وشهرة فى لغة الفيجوال بيسك



كود :
[color=#000000][COLOR=#0000bb]Dim myString [/color][color=#007700]as [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"Are You Register In VB4ARAB ?"  
[/COLOR][color=#0000bb][/color][/COLOR]


المتغير النصي String نستطيع أن نوصفه أنه مصفوفة من الحروف ، ونستطيع أن نتعامل معه كما لو كان مصفوفة

ولننظر فى هذا الكود


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Private [/color][color=#0000bb]Sub DisplayAcronym_Click[/color][color=#007700]( [/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][COLOR=#0000bb]_
   ByVal e [/COLOR][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Button1[/color][color=#007700].[/color][COLOR=#0000bb]Click
   Dim myString [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"BADRMEDIA"
   [/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700]) & [/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]4[/color][color=#007700]) &  [/color][color=#0000bb]myString[/color][color=#007700].[/color][color=#0000bb]Chars[/color][color=#007700]([/color][color=#0000bb]8[/color][COLOR=#007700]))
[/COLOR][COLOR=#0000bb]End Sub  
[/COLOR][/COLOR]


ستكون النتيجة " BMA "


إذن تعاملنا مع المتغير النصي كأنه مصفوفة من الحروف ونصل لأى منها برقم الفهرس


تصف وثائق مايكروسوفت The Microsoft documentation الــــ String بأنه "immutable" وذلك يعنى أنه لا يمكن تغييره ، ولكننا نعرف أنه يمكن تغييره بسهولة


حجم البيانات داخل هذا المتغير ، ذكرت مايكروسوفت أنها تبدأ من 0 حتي قرب 2 بليون حرف يونيكود


"0 to approximately 2 billion (2 ^ 31) Unicode characters


ماذا لو احتجت حجم أكبر ، لذلك ظهر فى دوت نت 2008 هذا النوع الجديد Stringbuilder

أنه أسرع أكبر من النوع String

Stringbuilder له طرق وخصائص لابد أن تتعرف عليها منها :

Append : وهى مثل المعامل ( & ) أو ( + )

Length : يعطى الطول الحقيقى للبيانات المخزنة داخل Stringbuilder

Insert, Remove, Replace : مثل ما كانت فى المتغير String


------------------------------------------------------------------------------

تستطيع أن تحدد السعة ( Capacity ) المطلوبة لحفظ البيانات داخل المتغير الجديد Stringbuilder

لنبدأ فى التعامل معه

لابد أن نضيف فضاء الاسم ( Name Space )

System.Text قبل استعمال المتغير الجديد أو ذكر اسم الفضاء قبل استخدامه مثل ذلك



كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Text[/color][color=#007700].[/color][COLOR=#0000bb]StringBuilder  
[/COLOR][/COLOR]



لنرى الآتي

كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][COLOR=#0000bb]StringBuilder
MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]TestAppend[/color][color=#007700].[/color][color=#0000bb]Capacity[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]


ستجد أن النتيجة للرسالة هى 16 أى أن السعة للمتغير هى 16

ماذا لو أظهر طول أكبر من 16


لنري


كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][COLOR=#0000bb]StringBuilder
TestAppend[/COLOR][color=#007700].[/color][color=#0000bb]Append[/color][color=#007700]([/color][color=#dd0000]"12345678123456781"[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]TestAppend[/color][color=#007700].[/color][color=#0000bb]Capacity[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]


سنجد أن السعة تقول أنها 32 أى الضعف وهكذا
}}}}
تم الشكر بواسطة:
#2
ماذا لو أردنا أن يكون الحجم محدد - بمعنى تحديد حجم البداية والنهاية


نستطيع التحكم في ذلك

تستطيع تحديد بداية السعة وتحدد سعة النهاية



كود :
[color=#000000][COLOR=#0000bb]Dim TestAppend [/color][color=#007700]As New [/color][color=#0000bb]StringBuilder[/color][color=#007700]([/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]20[/color][COLOR=#007700])  
[/COLOR][/COLOR]


لو قمت بادخال حجم بيانات أكبر أو أقل من الحجم المحدد هنا وهو 10 : 20

سيقوم ArgumentOutOfRangeException باظهار Exception
}}}}
تم الشكر بواسطة:
#3
ذكرنا أن StringBuilder أسرع كيف ذلك ؟


سنجد مثال هنا يفرق بين استخدام And "& " واستخدام Append



تكتب القيمة فى مربع النص NumberOfIterations وتضغط على الزر واطلع على النتيجة



============================================


المثال ليس من تأليفي - لكن قمت بجمعه من شروحات





الملفات المرفقة
.rar   Time The Operations.rar (الحجم : 62.96 ك ب / التحميلات : 21)
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  معلومة ::: Build Error RaggiTech 0 304 09-10-12, 03:41 PM
آخر رد: RaggiTech
  معلومة- كيف تحسن أداء XMLSerializer باستخدام SGen.exe Tool RaggiTech 0 346 09-10-12, 11:48 AM
آخر رد: RaggiTech
  معلومة: System.IO.Packaging namespace Islam Ibrahim 0 499 17-09-12, 01:02 PM
آخر رد: Islam Ibrahim
  معلومة: Microsoft FxCop Analysis Tool Islam Ibrahim 0 428 17-09-12, 12:51 PM
آخر رد: Islam Ibrahim

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم