في لغة C#، تُعتبر أنواع البيانات (Data Types) أساسًا هامًا جدًا، حيث تُحدد نوع القيم التي يمكن تخزينها في متغير ما، وكيفية التعامل مع هذه القيم. تُقسم أنواع البيانات في C# بشكل رئيسي إلى قسمين: أنواع القيم (Value Types) وأنواع المراجع (Reference Types).

1. أنواع القيم (Value Types):

تُخزن أنواع القيم البيانات مباشرةً في الذاكرة. عند نسخ متغير من نوع قيمة إلى آخر، يتم نسخ القيمة الفعلية. تشمل أنواع القيم ما يلي:

  • أنواع البيانات البسيطة (Simple Types):
    • الأعداد الصحيحة (Integers):
      • int: عدد صحيح 32 بت.
      • short: عدد صحيح 16 بت.
      • long: عدد صحيح 64 بت.
      • byte: عدد صحيح 8 بت بدون إشارة (موجب فقط).
      • sbyte: عدد صحيح 8 بت بإشارة (موجب وسالب).
      • uint: عدد صحيح 32 بت بدون إشارة.
      • ushort: عدد صحيح 16 بت بدون إشارة.
      • ulong: عدد صحيح 64 بت بدون إشارة.
    • أعداد الفاصلة العائمة (Floating-Point Numbers):
      • float: عدد فاصلة عائمة 32 بت.
      • double: عدد فاصلة عائمة 64 بت.
    • العدد العشري (Decimal):
      • decimal: عدد عشري 128 بت، يُستخدم في العمليات المالية والحسابات التي تتطلب دقة عالية.
    • المحرف (Character):
      • char: محرف Unicode 16 بت.
    • المنطقي (Boolean):
      • bool: قيمة منطقية، إما true (صحيح) أو false (خاطئ).
  • أنواع التعداد (Enum Types):
    • تُمثل مجموعة من الثوابت المُسماة.
  • أنواع الهياكل (Struct Types):
    • تُمكن من إنشاء أنواع بيانات مُخصصة تجمع بين عدة أنواع بيانات أخرى.
  • أنواع القيم القابلة للقيم الخالية (Nullable Value Types):
    • تسمح لأنواع القيم بأخذ القيمة null بالإضافة إلى قيمها العادية. تُكتب باستخدام علامة الاستفهام ? بعد نوع البيانات، مثل int?.

2. أنواع المراجع (Reference Types):

لا تُخزن أنواع المراجع البيانات مباشرةً، بل تُخزن مرجعًا (عنوانًا) إلى مكان تخزين البيانات في الذاكرة. عند نسخ متغير من نوع مرجع إلى آخر، يتم نسخ المرجع فقط، وليس البيانات الفعلية. هذا يعني أن كلا المتغيرين سيُشيران إلى نفس مكان البيانات في الذاكرة. تشمل أنواع المراجع ما يلي:

  • أنواع الأصناف (Class Types):
    • تُعتبر اللبنة الأساسية في البرمجة الكائنية في C#.
  • أنواع الواجهات (Interface Types):
    • تُحدد عقدًا يجب على الأصناف تنفيذه.
  • أنواع المفوضين (Delegate Types):
    • تُستخدم لتمرير الدوال كمعاملات إلى دوال أخرى.
  • أنواع المصفوفات (Array Types):
    • تُخزن مجموعة من العناصر من نفس نوع البيانات.
  • نوع السلسلة النصية (String):
    • يُمثل سلسلة من المحارف.
  • نوع الكائن (Object):
    • يُعتبر النوع الأساسي لجميع الأنواع في C#.

مثال توضيحي:

C#
// أنواع قيم
int x = 10;
int y = x; // يتم نسخ قيمة x إلى y (y = 10)

// أنواع مراجع
string name1 = "Ahmed";
string name2 = name1; // يتم نسخ مرجع name1 إلى name2
name2 = "Ali"; // تغيير قيمة name2 سيؤثر على name1 أيضًا (كلاهما يشير الآن إلى "Ali")

Console.WriteLine(x); // Output: 10
Console.WriteLine(y); // Output: 10
Console.WriteLine(name1); // Output: Ali
Console.WriteLine(name2); // Output: Ali

ملخص أنواع البيانات في C#:

نوع البياناتوصفمثال
intعدد صحيح 32 بتint age = 25;
doubleعدد فاصلة عائمة 64 بتdouble price = 19.99;
boolقيمة منطقية (true أو false)bool isStudent = true;
stringسلسلة نصيةstring name = "John Doe";
charمحرف Unicode 16 بتchar initial = 'J';
decimalعدد عشري 128 بتdecimal salary = 5000.50m;