C# Programming

تحويل سلسلة قوية إلى قيمة منطقية في C#

Spread the love

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

تحويل بوليني قوي باستخدام bool.TryParse()

يُعد تحويل السلاسل النصية إلى قيم بولينية مهمة متكررة في C#، خاصة عند معالجة إدخال المستخدم أو مصادر البيانات الخارجية. غالبًا ما تمثل السلاسل النصية ضمنيًا حالات بولينية (“true”، “false”، “1”، “0”). النهج الأقوى يعتمد على طريقة bool.TryParse().

تحاول bool.TryParse() التحويل دون إثارة استثناءات. تُرجع true عند النجاح، وتضع القيمة البولينية الناتجة في معلمة out؛ وإلا، فإنها تُرجع false. هذا يسمح بمعالجة الأخطاء بشكل سلس.


string strTrue = "True";
string strFalse = "false";
string invalidString = "hello";
bool result;

if (bool.TryParse(strTrue, out result))
{
    Console.WriteLine($"تحويل ناجح: {result}"); // مخرجات: تحويل ناجح: True
}
else
{
    Console.WriteLine("فشل التحويل");
}

if (bool.TryParse(strFalse, out result))
{
    Console.WriteLine($"تحويل ناجح: {result}"); // مخرجات: تحويل ناجح: False
}
else
{
    Console.WriteLine("فشل التحويل");
}

if (bool.TryParse(invalidString, out result))
{
    Console.WriteLine($"تحويل ناجح: {result}");
}
else
{
    Console.WriteLine("فشل التحويل"); // مخرجات: فشل التحويل
}

تُوصى بهذه الطريقة لقدرتها على تحمل الأخطاء، مما يمنع تعطل البرنامج بسبب الإدخال غير المتوقع. يمكنك معالجة حالات فشل التحويل بشكل مناسب، ربما بعرض رسائل خطأ إعلامية أو باستخدام قيم بولينية افتراضية.

طرق التحويل المباشر: bool.Parse() و Convert.ToBoolean()

في حين أن bool.TryParse() مفضلة لقدرتها على تحمل الأخطاء، فإن bool.Parse() و Convert.ToBoolean() توفران بدائل أكثر إيجازًا، وإن كانت أقل تسامحًا.

تحول bool.Parse() سلسلة نصية مباشرة. تقبل “True”، “False”، “true”، “false”، “1”، و “0” (حساسة لحالة الأحرف لـ “True” و “False”)، وتُثير FormatException لإدخال غير صالح.


string strTrue = "True";
bool boolTrue = bool.Parse(strTrue); // true

تتصرف Convert.ToBoolean() بشكل مشابه، لكنها تعالج إدخال null بإرجاع false، وتجنب ArgumentNullException.


string strNull = null;
bool boolNull = Convert.ToBoolean(strNull); // false

ومع ذلك، فإن كلا الطريقتين أقل مرونة وأكثر عرضة للأخطاء من bool.TryParse() في معالجة سلاسل الإدخال غير المتوقعة.

معالجة التمثيلات المختلفة للسلاسل النصية

من المهم مراعاة كيفية تعامل تطبيقك مع التمثيلات المختلفة للسلاسل النصية للقيم البولينية. في حين أن الطرق المذكورة تقبل “true”، “false”، “1”، و “0”، قد تواجه اختلافات مثل “yes”، “no”، “Y”، “N”، أو حتى تمثيلات مخصصة. في مثل هذه الحالات، ضع في اعتبارك إضافة معالجة مسبقة مخصصة لتوحيد سلسلة الإدخال قبل التحويل، ربما باستخدام عبارة switch أو البحث في القاموس.

على سبيل المثال، لاستيعاب “yes” و “no”:


string input = "yes";
string normalizedInput = input.ToLower();
bool result;

if (normalizedInput == "yes" || normalizedInput == "true" || normalizedInput == "1")
{
    result = true;
}
else if (normalizedInput == "no" || normalizedInput == "false" || normalizedInput == "0")
{
    result = false;
}
else
{
    // معالجة الإدخال غير الصحيح
    result = false; // أو إثارة استثناء
}

اترك تعليقاً

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