Convert.ToBoolean (string) और Boolean.Parse (string) में क्या अंतर है?


80

दोनों विधियों में क्या अंतर है

Convert.ToBoolean()

तथा

Boolean.Parse()?

क्या एक या दूसरे का उपयोग करने का कोई कारण है?

इसके अतिरिक्त, क्या कोई अन्य type.Parse()विधियां हैं जिन्हें मुझे देखना चाहिए?

धन्यवाद,

मैट

जवाबों:


79

Convert.ToBoolean(string)वास्तव में bool.Parse()वैसे भी कॉल करता है, इसलिए गैर-शून्य के लिए string, कोई कार्यात्मक अंतर नहीं है। (अशक्त strings के लिए, Convert.ToBoolean()रिटर्न false, जबकि bool.Parse()फेंकता है a ArgumentNullException।)

इस तथ्य को देखते हुए, आपको bool.Parse()तब उपयोग करना चाहिए जब आप निश्चित हों कि आपका इनपुट शून्य नहीं है, क्योंकि आप अपने आप को एक नल चेक से बचाते हैं।

Convert.ToBoolean()बेशक कई अन्य अधिभार हैं जो आपको boolकई अन्य अंतर्निहित प्रकारों से उत्पन्न करने की अनुमति देते हैं , जबकि केवल एस के Parse()लिए है string

Type.Parse () मेथड्स के संदर्भ में आपको जिन तरीकों की तलाश करनी चाहिए, उनमें सभी बिल्ट-इन न्यूमेरिक टाइप्स के Parse()साथ-साथ TryParse()मेथड्स भी हैं। DateTimeउन लोगों के साथ-साथ अतिरिक्त ParseExact()/ TryParseExact()विधियां हैं, जो आपको तिथि के लिए एक अपेक्षित प्रारूप निर्दिष्ट करने की अनुमति देती हैं।


विवरण के लिए धन्यवाद। तो, दोनों के बीच प्रदर्शन में कोई अंतर नहीं है, या आप बूलियन का उपयोग करके बहुत छोटे लाभ कह सकते हैं। दुर्लभ (स्ट्रिंग)?
mbrownnyc

1
@mbrownnyc का उपयोग करके Parse() आप एक बहुत ही मामूली (संभावित अगोचर) लाभ प्राप्त करेंगे यदि आप निश्चित हैं कि इनपुट शून्य स्ट्रिंग नहीं है । यदि आप निश्चित नहीं हैं, तो बस उपयोग करें ToBoolean(), क्योंकि यह आपके लिए चेक करेगा। और यदि आप नहीं चाहते कि एक अशक्त स्ट्रिंग का परिणाम गलत हो, तो अपने आप को चेक करें, और फिर कॉल करें Parse()यदि यह शून्य नहीं है।
20

34

यहाँ लघु डेमो है:

object ex1 = "True";
Console.WriteLine(Convert.ToBoolean(ex1)); // True
Console.WriteLine(bool.Parse(ex1.ToString())); // True

object ex2 = "true";
Console.WriteLine(Convert.ToBoolean(ex2)); // True
Console.WriteLine(bool.Parse(ex2.ToString())); // True

object ex3 = 1;
Console.WriteLine(Convert.ToBoolean(ex3)); // True
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException

object ex3 = "1";
Console.WriteLine(Convert.ToBoolean(ex3)); // An unhandled exception of type 'System.FormatException' occurred
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException

object ex4 = "False";
Console.WriteLine(Convert.ToBoolean(ex4)); // False
Console.WriteLine(bool.Parse(ex4.ToString())); // False

object ex5 = "false";
Console.WriteLine(Convert.ToBoolean(ex5)); // False
Console.WriteLine(bool.Parse(ex5.ToString())); // False

object ex6 = 0;
Console.WriteLine(Convert.ToBoolean(ex6)); // False
Console.WriteLine(bool.Parse(ex6.ToString())); // Unhandled Exception: System.FormatException

object ex7 = null;
Console.WriteLine(Convert.ToBoolean(ex7)); // False
Console.WriteLine(bool.Parse(ex7.ToString())); // Unhandled Exception: System.NullReferenceException

नोट: boolट्रूस्ट्रिंग और फाल्सस्ट्रिंग के दो गुण भी हैं , लेकिन सावधान रहें, क्योंकि bool.TrueString != "true", केवलbool.TrueString == "True"

Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False

2
Convert.ToBoolean("1"); // Format Exception
रॉबर्ट मैकी

3

Boolean.Parse()तार्किक बूलियन मान के स्ट्रिंग प्रतिनिधित्व को बूलियन मान में बदल देगा। Convert.ToBoolean()ऐसे कई अधिभार हैं जो आदिम प्रकारों को उनके बूलियन समकक्ष में बदल देंगे।

अधिकांश, यदि सभी नहीं, तो C # में आदिम प्रकार के एक संबद्ध * .Parse / Convert.To * पद्धति है जो समान उद्देश्य के रूप में कार्य करती है Boolean.Parse()/Convert.ToBoolean()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.