This article is currently in the process of being translated into Arabic (~98% done).
المتغيرات
من الممكن مقارنة المتغير بحجرة التخزين، و المتغير مهم للمبرمج ، و في سي شارب #c يمكن إعلان (تعريف) المتغير كما يلي :
<نوع البيانات> <الأسم>;
مثال عن المتغير:
string name;
هذه أبسط طريقة لكتابته, لكن المتغير إلى الآن لم يحصل على قيمة. تستطيع إعطاء قيمه له لاحقا أو في نفس وقت إعلانه
<data type> <name> = <value>;
إذا لم يكن موجود بشكل محلي أي بداخل الكلاس (class), من الممكن أنك تريد أن تعطيه تصريح بمستوى آخر
<visibility> <data type> <name> = <value>;
مثال كامل:
private string name = "John Doe";
قسم التصريح مرتبط بالفئات (Classes), لهذا من الممكن أن تجد مثال كامل عنه في فصل الفئات
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string firstName = "John";
string lastName = "Doe";
Console.WriteLine("Name: " + firstName + " " + lastName);
Console.WriteLine("Please enter a new first name:");
firstName = Console.ReadLine();
Console.WriteLine("New name: " + firstName + " " + lastName);
Console.ReadLine();
}
}
}
حسنا, الكثير من هذا تم شرحه بالفعل, لهذا سوف ننتقل الآن إلى الجزء الممتع. أولا, لقد قمنا بإنشاء عدة متغيرات من نوع نصي (String), النوع النصي يحتوي ببساطة على نص, مثلما تشاهد, أعطيناهم قيمة مباشرة. الآن, نحن سوف نقوم بإخراج نص على الكونسول(الشاشة السوداء), وتم إستخدام متغيرين, النص تم عمله باستخدام علامة الزائد (+) لكي يتم الجمع بين المتغيرين
الآن, نحن نسأل المستخدم لإدخال إسم أول جديد وبعدها نستخدم الميثود ReadLine لكي تمكننا من قراءة البيانات التي كتبها المستخدم وحفظها في المتغير firstName. حالما يضغط المستخدم زر Enter, الأسم الأول الجديد تم تخزينه في المتغير, وفي السطر التالي نحن نقوم بطباعة أو إستخراج الاسم المدخل مجددا لإظهار الفرق, نحن فقط قمنا بغستخدام المتغير الأول و أهم شيئ في المتغيرات هي القدرة على تغيير القيمة في ال Runtime (أي في نفس الوقت و البرنامج يعمل)
مثال اخر مهم و هو القيام بالعمليات الحسابية. المثال التالي معتمد على مجموعة شفرات قمنا باستخدامها سابقا.
int number1, number2;
Console.WriteLine("Please enter a number:");
number1 = int.Parse(Console.ReadLine());
Console.WriteLine("Thank you. One more:");
number2 = int.Parse(Console.ReadLine());
Console.WriteLine("Adding the two numbers: " + (number1 + number2));
Console.ReadLine();
ضع هذا الكود بداخل ال main function وجربها , الخدعه الجديده التى تم استخدامها هنا هى ()int.parse حيث ان هذه الفانكشن تقوم بقراءة الجمل النصيه وتقوم بتحويلها الى ارقام صحيحه لتمكنك من ادخال ارقام صحيحه بداخل ال consol . هذا التطبيق لا يبذل مجهود لفحص ما تم ادخاله واذا قام المستخدم بادخال اى مدخلا غير ارقام صحيحه فسيظهر لك تحذير بانك قمت بادخال مدخل غير مسموح به سيتم مناقشه لك لاحقا
المتغيرات و المجال
إلى الآن لم نستخدم سوى المتغيرات المحلية local variables و هي متغيرات تُعرّف و تُستخدم داخل الميثود method , و في سي شارب C# عندما يُعرّف المتغير variable داخل الميثود method فإنه لا يُمكن إستخدامُه خارج هذه الميثود method و لهذا يُسمى متغيراً محلياً local variable ، إذا كانت لك سابقُ معرفة بلغات البرمجة فلابد أنك سمعت بالمتغيرات العامة global variables و هذه المتغيرات يمكن استخدامها و الوصول لها من أماكن كثيرة داخل الكود، لكن سي شارب #C لا تدعم هذا النوع من المتغيرات، بدلا من ذلك تمكنك سي شارب C# من تعريف متغير داخل الفئة class بحيث يمكن لك استخدامه داخل كل الميثودز methods التي تنتمي لهذه الفئة class، الآن دعني أوضح ما قلتُ بالمثال التالي :
using System;
namespace VariableScope
{
class Program
{
private static string helloClass = "Hello, class!";
static void Main(string[] args)
{
string helloLocal = "Hello, local!";
Console.WriteLine(helloLocal);
Console.WriteLine(Program.helloClass);
DoStuff();
}
static void DoStuff()
{
Console.WriteLine("A message from DoStuff: " + Program.helloClass);
}
}
}
لاحظ أن helloClass تم تعريفها في اطار الكلاس وليس في اطار الميثود ، وهذا يتيح لنا استدعاء هذا المتغير من خلال كل الميثود Main() وDoStuff() الموجودة في الكلاس. ولا ينطبق هذا الكلام علي المتغير helloLocal لانه تم تعريفه داخل الميثود ماين() فقط. ولا يمكن استخدامه داخل اي ميثود ثانية.
مبدأ التفريق بين اماكن التعريف المتغيرات يسمي التحديد scoping وهو مفيد في منع الكود من التضخم الحادث للمتغيرات . وهناك اسلوب اخر يسمي الوضوح visibility (وفي هذة الحالة يسمي الكلمات الدلالية) والتي سنشرحها في الجزء الخاص بالطبقات (الكلاس).
ملخص
المتغيرات تسمح لك بتخزين البيانات ذات انواع مختلفه مثلا ( جمل نصيه و ارقام ومتغيرات اخرى ). يوجد متغيرات محليه حيث يمكن استخدامها بداخل الفانكشن التى قمنا بتعريف هذا المتغير بداخلها وايضا يوجد متغيرات بداخل الكلاسات التى يمكن الوصول اليها بواسطه الفانكشنز بداخل الكلاس وايضا خارجها وهذا يتوقف على نوع الحمايه لهذا المتغير ليتم تحديد اا كنت تستطيع الوصول اليه بداخل الكلاس فقط او بداخله وخارجه