السبت، 28 مايو، 2011

ما يجب أن تتجنبه عند معالجة السلاسل النصية على منصة الدوت نت

على عكس بعض اللغات الكلاسيكية (مثل السي و السي++ ..الخ)  فإن السلاسل النصية في منصة الدوت نت ليست مجرد جداول من الرموز (Chars) بل هي في الحقيقة عبارة عن كائنات من الصنف String و هي فئة غنية بالدوال التي ستجعل التعامل معها أكثر سهولة من أي وقت مضى و ستغنيك عن كثير من العمليات عديمة الجدوى التي كنت ستضطر للقيام بها لو كنت تبرمج بلغة أخرى، لكن اذا أزلنا الستار عن هذه الفئة سنجد أنها في الحقيقة تقوم بإدارة جدول من الرموز (التي تستعمل ترميز Unicode 16) تتولى توليده تلقائياً كما تقوم بكل العمليات اللازمة من أجل تعديله متى دعت الحاجة (بما في ذلك تحرير الذاكرة بالنسبة للرموز التي لم تعد لنا بها حاجة)، أي أن متغيراً نصياً من 3 رموز لن يقوم بحجز نفس السعة التي سيحجزها متغير من 10 رموز على عكس السي مثلاً حيث ستكون ملزماً بالاحتفاظ بباقي الخانات رغم أنك لا تستعملها (جميل، أليس كذلك؟)..

أمر رائع آخر أن منصة الدوت نت تعامل الفئة String كأنها نوع Type و بذلك فانه ليس من الضروري أن تقوم بكتابة new عند تعريف متغير جديد، لاحظ أنني قلت متغير و ليس كائن كونه من الممكن اسناد قيمة له مباشرة بالمعامل = كما أنه من الممكن اضافة أحرف إلى آخر النص باستعمال المعامل += و إليك المثال التالي: