تحويل أنواع البيانات
نصيحة
راجع علامة التبويب النص والصور لمزيد من التفاصيل!
نظرا لأن C# مكتوب بقوة، فأنت تحتاج أحيانا إلى تحويل قيمة بشكل صريح من نوع بيانات إلى آخر. يعد هذا الأمر مهما بشكل خاص عند العمل مع إدخال المستخدم، لأن Console.ReadLine() دائما ما يقوم بإرجاع النص (أ string) - حتى عندما يكتب المستخدم رقما.
سبب أهمية التحويل
ضع في اعتبارك هذا السيناريو الشائع:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int nextYear = ageInput + 1; // ERROR! Can't add int to string
لإجراء العمليات الحسابية باستخدام إدخال المستخدم، تحتاج إلى تحويل السلسلة إلى رقم أولا.
تحويل الأساليب
يوفر Convert C# أساليب لتغيير القيم بين أنواع البيانات:
| الطريقة | تحويل إلى | مثَال | النتيجة |
|---|---|---|---|
Convert.ToInt32() |
الباحث | Convert.ToInt32("42") |
42 |
Convert.ToDecimal() |
عشري | Convert.ToDecimal("19.99") |
19.99m |
Convert.ToDouble() |
انقر نقرا مزدوجا | Convert.ToDouble("3.14") |
3.14 |
Convert.ToString() |
خيط | Convert.ToString(42) |
"42" |
فيما يلي كيفية إصلاح السيناريو السابق:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int age = Convert.ToInt32(ageInput);
int nextYear = age + 1;
Console.WriteLine($"Next year you'll be {nextYear}");
يمكنك محاولة تشغيل هذه التعليمة البرمجية بنفسك في محرر التعليمات البرمجية C#.
طرق التحليل
هناك طريقة أخرى لتحويل السلاسل إلى أرقام وهي باستخدام الأساليب Parse :
int age = int.Parse("25");
decimal price = decimal.Parse("19.99");
double average = double.Parse("87.5");
كلاهما Convert.ToInt32() والقيام int.Parse() بأشياء مماثلة - استخدم النمط الذي تفضله.
التحويل بين الأنواع الرقمية
للتحويل بين الأنواع الرقمية (مثل decimalint)، استخدم التحويل عن طريق وضع النوع الهدف بين أقواس:
decimal price = 19.99m;
int wholePrice = (int)price; // Casts to int: 19 (decimal dropped)
Console.WriteLine(wholePrice); // Output: 19
يمكنك أيضا الصب للحفاظ على الدقة العشرية أثناء القسمة:
int first = 7;
int second = 2;
decimal result = (decimal)first / (decimal)second;
Console.WriteLine(result); // Output: 3.5
ماذا يحدث مع التحويلات غير الصالحة؟
إذا حاولت تحويل قيمة لا يمكن تفسيرها كرقم، فإن C# يطرح خطأ:
int number = Convert.ToInt32("hello"); // ERROR: Input string was not in a correct format
في الوقت الحالي، ما عليك سوى التأكد من إمكانية تحويل القيمة قبل المحاولة. في وقت لاحق، ستتعلم كيفية التعامل مع الأخطاء بأمان.