حبيت أضيف فائدة على السريع :
لماذا ؟ تحتاج لتعريف class أو حتى structure قديما
هناك متغيرات تكون مبنية primtiv data types في داخل لغات البرمجة مثل ( int - float - bool ) و بواسطتها يمكن عمل كل شيء في البرمجة ( و إلا تكون لغة البرمجة ضعيف ) .
ولكن هناك حاللات يكون في استخدام المتغيرات في البرنامج متداخلا .. يعني مثلا :
تخيل أنك تريد أن تكتب برنامج يقوم بتنظيم المدرسة .. بحيث يكون اسم المادة و مجموع الدرجات فيها .
فيه هذه الحالة و باستخدام primtiv data types ستحتاج إلى مصفوفة من نوع int و أخرى من نوع string ( طبعا اللغات اللي ما تدعم string ستكون مضطر إلى تعريف مصفوفة ببعدين ) .
أيضا يجب عليك أن تعمل كود يوافق بين كل مادة .. و درجتها عن طريق index أو أي شيء تختاره .
ستواجهك صعوبات في عمليات الإضافة .. و الحذف ... و أيضا عملية الموافقة بين المصفوفتين .. لكنك في النهاية ستستطيع القيام بذلك .
تخيل بعد أن أضعت يومك كله في هذا جاءك أحدهم .. و قال أضف خانة للتقدير ( جيد - ممتاز - ... ) أتقع أنك قد تذبحة لأنك ستكون مضطرا تقريبا إلى تعديل ما لا يقل عن نصف الكود .
إذا ما هو الحل ..؟
الحل هنا يكون باستخدام ما يسمى user define data type أي المتغيرات المعرفة من قبل المستخدم باستخدام struct (للمعلومية كل المتغيرات مبنية بهذه الطريقة ) .
class TheClass
{
public int x;
}
struct TheStruct
{
public int x;
}
class TestClass
{
public static void structtaker(TheStruct s)
{
s.x = 5;
}
public static void classtaker(TheClass c)
{
c.x = 5;
}
public static void Main()
{
TheStruct a = new TheStruct();
TheClass b = new TheClass();
a.x = 1;
b.x = 1;
structtaker(a);
classtaker(B);
Console.WriteLine("a.x = {0}", a.x);
Console.WriteLine("b.x = {0}", b.x);
}
}
using System;
هذا المثال يبين الفرق المهم بين struct و class هو
أن ال struct يمثل بالضبط نوع متغيرات جديد ففي المثل كريقة الإرسال كانت إرسال بالقيمة .
أما بالنسبة للـ class فهو دائما كمرجع ( pass by refrence ) .
هذا اللي في بالي الآن لو تذكرت شيء أو حب أحد يضيف شيء ....
ما فيه أي إشكال .
تذكرت نسيت أكتب فائدة الـ user define data types :
1- سهل الفهم لأنك أنت اللي تحدد أسمه على راحتك .
2- إمكانية التعديل . حيث عند إضافة نوع جديد كل ما عليك هو أن تفوم بإضافته في الـ struct و تعديل العمليات الخاصة به . ( بدل البحث في الكود ... و تعديله زي السالفة اللي فوق)
