محتويات الجدول
- تحويل بوليني قوي باستخدام
bool.TryParse()
- طرق التحويل المباشر:
bool.Parse()
وConvert.ToBoolean()
- معالجة التمثيلات المختلفة للسلاسل النصية
تحويل بوليني قوي باستخدام 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; // أو إثارة استثناء
}