في هذا الدرس سنوضح بعض المميزات لل method : 1- ترقية العناصر . 2- مفهوم الnamespace في ال #C . والآن بسم الله نبدأ : 1- ترقية العناصر . وهو ان يكون لدينا متغير معرف بنوع معين وتحويله بالإجبار إلى نوع آخر ليستطيع المرور في method معينة . وهناك نوعان من التحويل : 1- التحويل الضمني (implicit conversion) : ويقوم بتحويل قيمة المتغير من نوع إلى نوع آخر ضمنيا ً ، أي دون كتابة النوع الجديد قبل المتغير المراد تحويله اليه. مثال : ال method الذي اسمه sqrt() والذي يقوم بإعطاء الجذر التربيعي للرقم ، الموجود في الclass اسمها math (تحدثنا عنها سابقا) ، المتغيرات التي يستقبلها معرفة في الأصل double أي عند كتابة هذا الmethod كتب كالتالي : C# public Math( double x) فإذا بعثنا له رقم 4 مثلا ً والذي هو int : C# Console.writeline(Math.sqrt(4)); فسيتحول تلقائيا ً (ضمنيا ً) إلى 4.0 أي من نوع double ويكون الناتج 2 . وذلك لأن int أصغر من double إذا ً فهو يحتويه ، وهنا لا يحدث أي خسارة في المعلومات . 2- التحويل الصريح ( Explicit conversion) أما إذا اردنا التحويل العكسي فيجب كتابة نوع التحويل : C# double y = 4.5 ; Console.writeline(Math.sqrt ( ( int ) y ) ); ويكون الناتج هنا أيضا ً 2 لأنه تم تحويله إلى int قبل إيجاد الجذر ، ولكن في هذه الحالة يحدث خسارة في المعلومات . والجدول التالي يوضح حالات التحويل الضمنية :
في هذا الدرس سنوضح بعض المميزات لل method : 1- ترقية العناصر . 2- مفهوم الnamespace في ال #C . والآن بسم الله نبدأ : 1- ترقية العناصر . وهو ان يكون لدينا متغير معرف بنوع معين وتحويله بالإجبار إلى نوع آخر ليستطيع المرور في method معينة . وهناك نوعان من التحويل : 1- التحويل الضمني (implicit conversion) : ويقوم بتحويل قيمة المتغير من نوع إلى نوع آخر ضمنيا ً ، أي دون كتابة النوع الجديد قبل المتغير المراد تحويله اليه. مثال : ال method الذي اسمه sqrt() والذي يقوم بإعطاء الجذر التربيعي للرقم ، الموجود في الclass اسمها math (تحدثنا عنها سابقا) ، المتغيرات التي يستقبلها معرفة في الأصل double أي عند كتابة هذا الmethod كتب كالتالي :
public Math( double x)
فإذا بعثنا له رقم 4 مثلا ً والذي هو int :
Console.writeline(Math.sqrt(4));
فسيتحول تلقائيا ً (ضمنيا ً) إلى 4.0 أي من نوع double ويكون الناتج 2 . وذلك لأن int أصغر من double إذا ً فهو يحتويه ، وهنا لا يحدث أي خسارة في المعلومات . 2- التحويل الصريح ( Explicit conversion) أما إذا اردنا التحويل العكسي فيجب كتابة نوع التحويل :
double y = 4.5 ; Console.writeline(Math.sqrt ( ( int ) y ) );
ويكون الناتج هنا أيضا ً 2 لأنه تم تحويله إلى int قبل إيجاد الجذر ، ولكن في هذه الحالة يحدث خسارة في المعلومات . والجدول التالي يوضح حالات التحويل الضمنية :
2- مفهوم الnamespace في ال C# . C# تحتوي على مجموعة من ال classesمجتمعة داخل ال namespace والكود الرئيسي لهذه ال classes مخزنة بمكتبة مخصصة لل classes بإمتداد .dll وتدعى assemblies أي المرمّـزة . العبارة using تحدد ال namespace الذي نريد استخدامه في البرنامج . مثلا ً : جميع البرامج عند انشائها يتم استدعاء ال System namespace تلقائيا ً C# using System ; لإخبار ال compiler بأننا نريد استخدام ال System namespace ، وعبارة using تسمح لنا باستخدام ال classes الموجودة داخل ال System namespace . فنستدعي ال WriteLine method الموجود في ال Console class والموجود داخل ال System namespace بالطريقة التالية : C# Console.WriteLine
2- مفهوم الnamespace في ال C# . C# تحتوي على مجموعة من ال classesمجتمعة داخل ال namespace والكود الرئيسي لهذه ال classes مخزنة بمكتبة مخصصة لل classes بإمتداد .dll وتدعى assemblies أي المرمّـزة . العبارة using تحدد ال namespace الذي نريد استخدامه في البرنامج . مثلا ً : جميع البرامج عند انشائها يتم استدعاء ال System namespace تلقائيا ً
using System ;
لإخبار ال compiler بأننا نريد استخدام ال System namespace ، وعبارة using تسمح لنا باستخدام ال classes الموجودة داخل ال System namespace . فنستدعي ال WriteLine method الموجود في ال Console class والموجود داخل ال System namespace بالطريقة التالية :
Console.WriteLine
بدلا ً من كتابتها : System.Console.WriteLine وأي namespace آخر يجب إضافته يدويا ً عن طريق إضافة الملف المرجع له (add reference) كما تعلمنا في الدرس الثالث . والجدول التالي يوضح مجموعة بسيطة من ال namespaces الشائعة الإستخدام والتي سنستخدمها في البرامج التالية إن شاء الله ، وخاصة في برامج ال windows application :