تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الخامس : الأنواع والدوال الرئيسية .
#5
التحويل بين المتغيرات المختلفة :

بداية ، تنقسم التحويلات بين المتغيرات إلى نوعين رئيسين :

1- Widening Conversions
2- Narrowing Conversions

1- Widening Conversions :
يقصد بهذا النوع من التحويلات تلك التحويلات التي لا يمكن فيها خسارة اي نوع من البيانات ، وتسمى باسم upward cast ، مثال ذلك التحويل من Short إلى Integer في المثال التالي :

كود :
Short x=5;
power(x);

وفي الدالة power :

كود :
int power(int number)
{
return number^2;
}

لو لاحظت ستجد ان الدالة تستقبل بيانات من نوع Int فيما ارسلنا لها بيانات من نوع Short ، في هذه الحالة لن تكون هناك مشكلة لإن مدى ال Integer اكبر من مدى ال Short ، وبالتالي فإن اي مدى لل Short يقع ضمن ال Integer بكل تأكيد .

2- Narrowing Conversions

الحالة العكسية ، التحويل من الاكبر إلى الأصغر ، مثلاً لو كان المتغيران من نوع Integer والناتج من نوع Short ، سيعمل الامر بصورة صحيحة لو كان مجموع الرقمين Integer اصغر من الحد الأقصى لل Short ، ولكن لو افترضنا ان مجموعهم تجاوز حدود مدى ال Short فإن ذلك سينتج مشكلة .

لهذا السبب ، يمنعك الكومبايلر مباشرة من كتابة مثل هذا الكود ويعطيك رسالة الخطأ التالية :

Cannot implicitly convert type 'int' to 'short'.

لكن لو رغبنا في التحويل رغماً عن هذه النقطة حتى لو نتج عن ذلك ضياع بعض البيانات ، في هذه الحالة نلجأ لما يسمى بـ Cast :

عمليات ال Cast :

لا تنطبق عمليات ال cast على التحويل من اكبر لأصغر فقط ، بل يمكن استخدامها في كل عمليات التحويل ، ابسط استخدام لها هو لتحويل Integer إلى Short بالشكل التالي :

كود :
int var=10;
short var2 = (short)var;

في المثال السابق ، لو قمنا بطباعة نتيجة var2 سنجد انها 10 ، لكن ماذا لو افترضنا المثال التالي :

كود :
int var=100000;
short var2 = (short)var;
Console.WriteLine(var2);
Console.ReadKey();


النتيجة لن يمكن توقعها ، حيث ستكون النتيجة هي -31072 ، حيث سيقوم الكومبايلر بعكس الاشارات ابتداء من 32768 ومن ثم انقاص رقم مع كل زيادة عن الرقم السابق ، او باختصار فهو يقوم بطرح الرقم الناتج من الحد الاقصى او المدى الاقصى للنوع وهو 32767 .

باستخدام هذا النوع من التحويلات ، فإنه من المفضل دائماً استخدام Try Catsh والتي شرحها الاخ محمد سامر في الدرس السابق ، والتي سنعود لشرحها في مرحلة اخرى من الدورة بالتفصيل .


التحويل باستخدام Convert :

يمكن التحويل بين اي انواع من البيانات باستخدام الفئة Convert بالشكل التالي مثلاً :
كود :
myByte = Convert.ToByte(myInt);

نواصل في الدرس القادم مع الجمل الشرطية في .net والتكرارات Loops .
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس الخامس : الأنواع والدوال الرئيسية . - بواسطة oneyemenweb2_mybb_import4801 - 06-10-12, 06:20 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم