المتغيرات (Variables) في لغة C#
المتغيرات في لغة C# هي أماكن تخزين مُسمّاة في الذاكرة تُستخدم لحفظ البيانات التي يستخدمها البرنامج. لكل متغير اسم ونوع وقيمة. يُحدّد نوع المتغير نوع البيانات التي يمكن تخزينها فيه (مثل أعداد صحيحة، أعداد عشرية، نصوص، إلخ).
تعريف المتغيرات
يتم تعريف المتغيرات في C# باستخدام الصيغة التالية:
<نوع البيانات> <اسم المتغير>;
مثال:
int age; // تعريف متغير باسم age من نوع عدد صحيحstring name; // تعريف متغير باسم name من نوع نصdouble salary; // تعريف متغير باسم salary من نوع عدد عشري مضاعف الدقة
يمكن أيضًا إعطاء قيمة ابتدائية للمتغير عند تعريفه:
int age = 30;string name = "أحمد";double salary = 5000.50;
أنواع البيانات في C#
توجد أنواع بيانات مُضمّنة (built-in) عديدة في C#، من أهمها:
- أنواع القيم (Value Types): تُخزّن القيمة مباشرة في الذاكرة. تشمل:
int
: أعداد صحيحة (مثل: 10، -5، 0).float
: أعداد عشرية بدقة مفردة.double
: أعداد عشرية بدقة مضاعفة.decimal
: أعداد عشرية عالية الدقة، مُناسبة للعمليات المالية.char
: حروف (مثل: 'A'، 'ب').bool
: قيم منطقية (إماtrue
أوfalse
).struct
: هياكل بيانات مُعرّفة من قِبل المستخدم.enum
: أنواع تعدادية.
- أنواع المراجع (Reference Types): تُخزّن مرجعًا (عنوانًا) إلى مكان البيانات في الذاكرة. تشمل:
string
: نصوص.object
: النوع الأساسي لجميع الأنواع في C#.class
: أصناف (كائنات).interface
: واجهات.delegate
: مؤشرات دوال.array
: مصفوفات.
الاسم | النوع الموافق في منصة دوت نت | القيم التي يقبلها | الحجم في الذاكرة |
---|---|---|---|
bool | System.Boolean | true أو false | 1 بايت |
sbyte | System.SByte | من 128- حتى 127 | 8 بت |
byte | System.Byte | من 0 حتى 255 | 8 بت |
short | System.Int16 | من 32,768- حتى 32,767 | 16 بت |
ushort | System.UInt16 | من 0 حتى 65,535 | 16 بت |
int | System.Int32 | من 2,147,483,648- حتى 2,147,483,647 | 32 بت |
uint | System.UInt32 | من 0 حتى 4,294,967,295 | 32 بت |
long | System.Int64 | من 9,223,372,036,854,775,808- حتى 9,223,372,036,854,775,807 | 64 بت |
ulong | System.UInt64 | من 0 حتى 18,446,744,073,709,551,615 | 64 بت |
char | System.Char | من U+0000 حتى U+ffff | 16 بت |
float | System.Single | من 3.410<sup>38</sup>- حتى +3.410<sup>38</sup> | 32 بت |
double | System.Double | من ±5.010<sup>-324</sup> حتى ±1.710<sup>308</sup> | 64 بت |
decimal | System.Decimal | (-7.910<sup>28</sup> to 7.910<sup>28</sup>)/(10<sup>0</sup> to 28) | 128 بت |
string | System.String | حسب حدود الذاكرة | - |
object | System.Object | يمكن تخزين بيانات من أي نوع | - |
تسمية المتغيرات
توجد قواعد لتسمية المتغيرات في C#:
- يجب أن يبدأ اسم المتغير بحرف أو شرطة سفلية (
_
). - يمكن أن يحتوي الاسم على حروف وأرقام وشرطات سفلية.
- لا يمكن أن يحتوي الاسم على مسافات.
- يُفضّل استخدام طريقة الجملة السنامية (camelCase) في تسمية المتغيرات (مثل:
firstName
،userAge
). - تُعتبر C# حساسة لحالة الأحرف (case-sensitive)، أي أن
age
تختلف عنAge
. - لا يجوز استخدام الكلمات المحجوزة في C# كأسماء للمتغيرات (مثل:
int
،string
،if
،for
).
مثال عملي
using System;
public class Program{ public static void Main(string[] args) { int x = 10; int y = 5; int sum = x + y;
Console.WriteLine("مجموع " + x + " و " + y + " يساوي " + sum); // سيطبع: مجموع 10 و 5 يساوي 15
string message = "مرحباً بالعالم!"; Console.WriteLine(message); // سيطبع: مرحباً بالعالم! }}
هذا المثال يُوضّح كيفية تعريف متغيرات من أنواع مختلفة وإجراء عمليات عليها.
نطاق المتغير (Variable Scope)
يُحدّد نطاق المتغير الجزء من البرنامج الذي يمكن الوصول إليه فيه. المتغير المُعرّف داخل دالة (method) يكون نطاقه محليًا للدالة، أي لا يمكن الوصول إليه من خارج الدالة. أما المتغير المُعرّف داخل صنف (class) فيكون نطاقه على مستوى الصنف.
استخدام الكلمة المفتاحية var
يمكن استخدام الكلمة المفتاحية var
لتعريف متغير دون تحديد نوعه بشكل صريح. يقوم المُترجم بتحديد نوع المتغير تلقائيًا بناءً على القيمة المُسندة إليه.
var name = "علي"; // سيُحدّد المُترجم نوع name على أنه stringvar age = 25; // سيُحدّد المُترجم نوع age على أنه int
يُفضّل استخدام var
عندما يكون نوع المتغير واضحًا من القيمة المُسندة إليه، وذلك لجعل الكود أكثر اختصارً