28/01/2022
من الاسئلة البسيطة جدا اللى بتتسأل في ال Interview واجابتها بتكون عبارة عن كلمتين هو ايه الفرق بين String vs StringBuilder
والاجابة بتكون ان ال String بيكون Immutable اما ال StringBuilder بيكون Mutable
تعالى بقى نوضح بشئ من التبسيط للمعلومة يعني ايه الكلام ده!!
معظمنا في كل مرة نحتاج ان نخزن ونتعامل مع ال Text فبنعرف متغير من نوع String و نقوم بعمل اضافة او تبديل او تعديل على هذا النص ونكمل شغلنا عادي جدا لكن للاسف الطريقة دي على المدى البعيد وفي المشاريع الكبيرة هييزيد استهلاك الميموري بشكل كبير. وهنا بقى يجي دور ال StringBuilder عشان يحل المشكلة دي. تعالى نعرف اهم الفروقات بينهم.
1. ال String is immutable type وده معناه انه غير قابل للتعديل وفي كل مرة بنعدل فيه بينشئ new instance ويضع فيه القيمة الجيدة وده طبعا بيؤدي الى ضعف في ال memory اعطيك مثال عشان تفهم اكثر:
string name = “Islam”;
name +=” Helmy”;
هنا بقى حجز مساحة X bytes في السطر الاول وحط فيها “Islam” وفي السطر الثاني حجز مساحة جديدة Y bytes وحط فيها “Islam Helmy” يبقى المجموع X+Y bytes اتحجزوا في العملية دي فقط وده بسبب انها Immutable Type
اما ال StringBuilder is mutable type وده معناه انه عن انشاء object بيحجز له مكان ونستطيع القيام بأي عملية عليه مثل such as append, replace, insert ولا يقوم بإنشاء new instance
2. من ناحية ال Performance ال String ابطأ من ال StringBuilder لانها في كل مرة تقوم بإنشاء new instance
3. ال String لا تحتوي على append انما ال StringBuilder تحتوي على append
4. ال String موجودة في System namespace انما ال StringBuilder موجودة في System. Text namespace.