C# Programming

تحويل سلسلة قوية إلى عدد صحيح في C#

Spread the love

تحويل السلاسل النصية إلى أعداد صحيحة مهمة أساسية في برمجة C#. تتناول هذه المقالة أكثر الطرق كفاءةً وقوةً، مع التركيز على أفضل الممارسات للتعامل مع مختلف السيناريوهات والأخطاء المحتملة.

جدول المحتويات

طرق TryParse() القوية

تُعد طرق TryParse() (مثل Int32.TryParse()، وInt64.TryParse()، وInt16.TryParse()) النهج المفضل عمومًا لتحويل السلاسل النصية إلى أعداد صحيحة في C#. فهي توفر ميزة كبيرة على طرق Parse() من خلال تجنب الاستثناءات. وبدلاً من ذلك، تُرجع قيمة منطقية تشير إلى النجاح أو الفشل، مع إرجاع العدد الصحيح المُحلل من خلال معلمة out.

يعزز هذا النهج الكفاءة وقابلية قراءة التعليمات البرمجية من خلال إزالة الحاجة إلى كتل try-catch. كما تتعامل TryParse() بشكل أنيق مع استثناءات تجاوز السعة، حيث تُرجع false بدلاً من إطلاق استثناء.


string strNumber = "12345";
int number;
bool success = Int32.TryParse(strNumber, out number);

if (success)
{
    Console.WriteLine("القيمة الصحيحة هي: " + number);
}
else
{
    Console.WriteLine("إدخال غير صالح. السلسلة النصية ليست عددًا صحيحًا صالحًا.");
}

طرق Parse(): مباشرة ولكن محفوفة بالمخاطر

توفر طرق Parse() (مثل Int32.Parse()، وInt64.Parse()، وInt16.Parse()) طريقة أكثر إيجازًا لتحويل السلاسل النصية إلى أعداد صحيحة، لكنها تأتي مع عيب كبير: فهي تُطلق استثناءات (FormatException) إذا لم تكن السلسلة النصية المدخلة تمثيلًا صحيحًا للعدد الصحيح. وهذا يتطلب استخدام كتل try-catch، مما يضيف تعقيدًا وإمكانية حدوث زيادة في وقت المعالجة.


string strNumber = "12345";
int number;

try
{
    number = Int32.Parse(strNumber);
    Console.WriteLine("القيمة الصحيحة هي: " + number);
}
catch (FormatException)
{
    Console.WriteLine("إدخال غير صالح. السلسلة النصية ليست عددًا صحيحًا صالحًا.");
}

على الرغم من بساطة بناء الجملة، إلا أن زيادة خطر الاستثناءات غير المُعالجة يجعل TryParse() بديلاً أكثر أمانًا وأفضل بشكل عام.

طرق Convert.ToInt*(): بدائل يجب مراعاتها

توفر فئة Convert طرقًا مثل Convert.ToInt32()، وConvert.ToInt64()، وConvert.ToInt16(). تشبه وظيفيًا Parse()، كما أنها تُطلق استثناءات عند الفشل. قد توفر اختلافات دقيقة في التعامل مع المسافات البيضاء أو الحالات الحدية، لكنها تشترك في نفس ضعف التعرض للاستثناءات، مما يجعل TryParse() الخيار الأكثر قوة.


string strNumber = "12345";
int number;

try
{
    number = Convert.ToInt32(strNumber);
    Console.WriteLine("القيمة الصحيحة هي: " + number);
}
catch (FormatException)
{
    Console.WriteLine("إدخال غير صالح. السلسلة النصية ليست عددًا صحيحًا صالحًا.");
}

اختيار الطريقة المناسبة لاحتياجاتك

في معظم السيناريوهات، يُوصى باستخدام TryParse(). إن أمانها في التعامل مع الاستثناءات وكفاءتها يجعلها الخيار الأفضل. استخدم Parse() أو Convert.ToInt*() فقط عندما يكون لديك سبب محدد للغاية للتعامل مع الاستثناءات مباشرةً داخل التعليمات البرمجية الخاصة بك وفهم الآثار المحتملة على الأداء. اختر دائمًا نوع العدد الصحيح المناسب (Int16، Int32، Int64) بناءً على النطاق المتوقع لقيم الإدخال الخاصة بك.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *