Type Casting / ألادخال & ألاخراج في C#
الكاتب: Mr.Aziz
تاريخ النشر: 2022-11-03 07:33:23
مرحبا....
اليوم سوف نتكلم عن ثلاث أشياء مرتبطة مع بعض. ولكن أولآ سوف نتكلم عن Type casting الى هو يتم تحويل data type من النوع الى نوع اخر..
السبب أريد ربطتهم مع بعض لانه input لايقبل ألا string و نريد نضيف تحويل ليتم تحويل من string الى int على سبيل المثال..
ماهو Type casting؟ هو يتم تحويل من data type معين الى نوع اخر لسبب ما. مثال: التحويل من string الى int أو double الى int و الى ذالك..
يوجد نوعين من type casting
1- تحويل بشكل تلقائي بما يسمى Implicit Casting. هو يتم تحويل من أصغر نوع الى أكبر نوع من الحجم.
char -> int -> long -> float -> double
مثال::
ألان وضعت متغير number_is_INT يتم أدخال القيمة من النوع integer
نفس الشئ متغير اخر number_is_double يكون خاص من النوع double
بتلاحظ بعد يساوي تم وضع المتغير ألاول ليتم أدخال القيمة من النوع int و يتم تحويله الى double بشكل تلقائي..
2- تحويل بشكل يدوي بما يسمى Explicit Casting: يتم تحويل من ألاكبر الى الاصغر من الحجم..
double -> float -> long -> int -> char
مثال:
تلاحظ تم وضع int بين قوسين بعد علامة يساوي
معنى القيمة التي تم ادخاله كا double أصبحت integer المتغير الثاني.
بمعنى تم تحويل من القيمة 15.8 كا double الى 15 كا integer
هذا نظام تحويل ولكن يوجد نوع اخر أذا كنت لاتريد تعمل تحويل بنفسك..
هو عن طريق الدالة المحجوزه (type conversion method)
هذي الدوال يتم استخدامها في حال ان تريد تحويل القيمة من int الى double بشكل تلقائي.
على سبيل المثال من الدوال::
ملاحظة هذي الدوال تستطيع أستخدامه سواء في الادخال او ألاخراج.
أيضآ يجب أستخدام الدالة convert ليتم تحويل التي تريده...
1- الدالة ToString يتم تحويل من Int الى string ولكن بالنتيجة سوف ترى هو بالاساس 100 ولكن يختلف.
بالواقع بدال أن يكون 100 أصبح هكذا "100" آي كتابيآ وليس أرقام..
2- الدالة ToDouble: ليتم تحويل الرقم 100 من int الى double هنا بأمكانك وضع القيمة هكذا 100.5 بسبب أنه اصبحت double.
3- الدالة ToInt32: ليتم تحويل الرقم 159.4 من double الى int لهذا السبب ترى بالنتيجة اصبحت 159 بدال 159.4 بسبب القيمة أصبحت int.
4- ToString: ليتم تحويل القيمة bool الى string و ألان اي قيمة سواء true او false لتصبح هكذا "True" أو "False" كتابيآ وليس كاقيمة bool.
لهذا السبب نحتاج تحويل القيم في هذا الدرس بسبب الموضوع input سوف اشرح عنها لاحقآ..
- output: ألاخراج هذا يتم طباعة الى المستخدم.
الامر يتم كتابة عن طريق دالة محجوزه هو writeline()
بالنتيجة ظاهره هي welcome to eqla3tech بسبب تم الكتابة في الدالة writeline
أيضآ سوف تلاحظ بوجود Line بعد write هذا يضع سطر جديد بكل مره يتم طباعة أمام المستخدم.
ولكن لو كتبت الدالة write() فقط. نرى النتيجة الان
سوف تلاحظ بالنتيجة تم تجاهل سطر جديد أو new line.
لهذا الفرق بين writeline و write
و من الجميل نستطيع أستخدام أرقام بشكل مباشر. على سبيل المثال.
مثل ماتلاحظ تم عمل جمع بين 15 و 84 و ظهر النتيجة هو 99.
هذا هو الدالة يتم اظهار للمستخدم فقط.
-input: الدالة أو أمر يستقبل اي مدخلات من المستخدم
والدالة تكون على شكل كذا ReadLine().
ولكن يوجد مشكلة في هذي الدالة على انه يستقبل فقط string
لايستقبل اي نوع اخر و يجب عليك أستخدام دالة التحويل زي ما تعلمنا فوق. الان سوف أشرح لك.
طريقة عمل الدالة بيكون بهذا الشكل..
أولآ وضعنا الدالة ليتم طباعة للمستخدم ماهو أسم المستخدم username
بعد كذا أنشأنا متغير username من النوع string
يساوي console.ReadLine() هو يتم قراءة أي مدخلات من المستخدم فقط.
بعد كذا مره اخرى نضع دالة ليتم طباعة المستخدم أسم المستخدم هو ثم علامة زائد ثم المتغير التي تم حفظ فيه القيمة المدخلة.
و النتيجة هكذا:
تلاحظ تم طباعة ماهو اسم المتسخدم
والمستخدم تم أدخال القيمة كا Aziz
بعد كذا تم طباعة مع القيم
و علامة زائد تعني يتم طباعة مع القيمة المدخلة..
تتذكرون لما قلت Readline() لايقرء سواء string يعني لاتستقبل نوع اخر فقط string
ماذا لو حاولنا؟ نشوف تجربة
سوف تلاحظ بعد ما عملت متغير age و من النوع int
console.readline لايستطيع قراءتها بسبب هي تستقبل من النوع string ولكن المتغير من النوع age
لهذا سبب هنا نحتاج شي اسمه convert أو تحويل النوع من الى النوع اخر.
في هذي الحاله عشان نتجنب من الخطأ نحول console.readline() من string الى int
نعمل هذي طريقة..
ألان تم تحويل consle.ReadLine من string الى int
و اتشغل بشكل تمام..
هذا الموضوع التي نحتاجه من اجل input أو المدخلات المستخدم..
أشوفكم على خير...