2013-07-03 16 views
8

मैं boolean structure के एमएसडीएन आलेख को पढ़ रहा था, जब मैंने देखा कि एक बुलियन के दो फ़ील्ड हैं: TrueString और FalseString। ये क्रमश: "ट्रू" और "झूठी" लौटते हैं।बूल क्यों करें। ट्रूस्ट्रिंग और बूल। फाल्स स्ट्रिंग मौजूद है?

कुछ खोज करने के बाद, मुझे केवल एक ही उदाहरण मिल सकता है this dotnetperls article में। लेख में कहा गया है:

कार्यक्रमों को अक्सर इन तारों की आवश्यकता होती है। ट्रूस्ट्रिंग और फाल्सस्टिंग केवल पढ़ने वाले सदस्यों की एक उपयोगी जोड़ी है। वे स्ट्रिंग प्रारूप में सत्य मानों का प्रतिनिधित्व करते हैं। वे सीधे स्ट्रिंग अक्षर का उपयोग कर सीधे संकेत और अमूर्त प्रदान करते हैं।

तो जाहिर है कि यह कुछ स्थितियों के लिए उपयोगी है। लेकिन वही लेख एक यथार्थवादी उदाहरण (आईएमएचओ वैसे भी) प्रदान करने में विफल रहता है।

कुछ और पढ़ने से यह भी मेरे ध्यान में लाया गया: ट्रूस्ट्रिंग और फाल्सस्टिंग सार्वजनिक स्थैतिक रीडोनली फ़ील्ड्स हैं। और this dornetperls article कहता है:

भाषा विनिर्देश सार्वजनिक स्थिर केवल पढ़ने के लिए फ़ील्ड ... जब क्षेत्र भविष्य में परिवर्तन के अधीन है का उपयोग कर सिफारिश की।

अब यह कुछ हद तक समझ सकता है। यदि .NET डेवलपर्स ने कभी भी "True" और "False" को क्रमशः "OkeyDokey" और "Negatory" को बदलने का निर्णय लिया है, तो यह TrueString और FalseString का उपयोग करने के लिए स्मार्ट है।

लेकिन यह अभी भी मुझे प्रश्न के साथ छोड़ देता है: आप किस प्रकार के परिदृश्य को एक बूलियन के स्ट्रिंग अक्षर के साथ एक स्ट्रिंग की तुलना करना चाहते हैं? क्योंकि प्रकट होता है: "कार्यक्रमों की अक्सर आवश्यकता होती है"।

+3

मैं कल्पना कर सकता हूं कि क्या आप अपना खुद का पार्सिंग कर रहे हैं (और किसी भी कारण से 'Boolean.Parse' का लाभ नहीं उठा रहे हैं)।मैं शायद उस कथन के खिलाफ तर्क दूंगा कि "प्रोग्राम्स _often_ की ज़रूरत है", लेकिन यह संभव है कि वे _could_ का उपयोग करें और बीसीएल टीम के लिए यह एक बहुत कम लटका हुआ फल है। संभावित रूप से 'बूलेन.ToString' विधि उन्हें कम से कम उस आउटपुट में आउटपुट करते समय भी लाभ देती है, यह बूलियन स्ट्रिंग प्रस्तुतियों के बारे में एक एकल/केंद्रीय घोषणा प्रदान करता है और डेवलपर्स इसका उपयोग किसी भी स्ट्रिंग आउटपुट की तुलना' बूल 'से करने के लिए कर सकते हैं। कड़ी कोडिंग '" सच "की तुलना में। –

+3

... क्योंकि .NET पर्यावरण कई भाषाओं का समर्थन करने के लिए डिज़ाइन किया गया है। http://stackoverflow.com/a/491367/284240 –

+0

@ टिमस्चल्टर, क्या आप समझा सकते हैं कि क्यों बहु भाषा समर्थन प्रासंगिक है कि आप एक बूलियन के स्ट्रिंग अक्षर को क्यों जानना चाहते हैं? संपादित करें: आपके द्वारा पोस्ट किए गए लिंक का प्रश्न मुझे एक अच्छा उदाहरण देता है। – Jordy

उत्तर

0

आसान शब्दों में। Boolean एक संरचना है। यह बूलियन ToString() विधि का पर्दाफाश करता है जो उपयोगकर्ताओं के लिए एक मानव पठनीय पाठ का प्रतिनिधित्व करता है। तो अगर आप कुछ चीज लिखते हैं।

bool b = false; 
b.ToString(); 

उत्पादन 0. का "गलत" insteed "गलत" मानव द्वारा पठनीय और easyly पर कब्जा कर लिया जा रहा है हो जाएगा।

कुछ भी जहां आप एक बूलियन मूल्य पर टेक्स्ट मान को पार्स करना चाहते हैं। इसलिए इन्हें बूलियन मानों के रूप में भी प्रदर्शित किया जा सकता है। उदाहरण के लिए। हम

Boolean.TryParse("false" ,out mybool) 

झूठा मान Tryparse विधि द्वारा सेट किया जा रहा है क्योंकि यह पता चलता है कि हम तार उपकरण से मूल्य पढ़ सकते हैं।

+0

b = b झूठ नहीं है; Console.Write (ख); 0 के बजाय "गलत" आउटपुट करेगा? – Jordy

0

यदि प्रोग्राम मानव पठनीय फ़ाइल या डेटाबेस में डेटा संग्रहीत करता है, तो इसे तारों को तारों के रूप में स्टोर करने की आवश्यकता हो सकती है। जब आप डेटा को वापस पढ़ते हैं, यदि आपको पता है कि डेटा आपके एप्लिकेशन द्वारा लिखा गया था और मानक स्ट्रिंग प्रस्तुति का उपयोग करता है, तो आप की तुलना bool.TryParse(x ...) से कर सकते हैं। आप यह सुनिश्चित करके डेटा को भी सत्यापित कर सकते हैं कि सभी मान x == bool.TrueString || x == bool.FalseString

यदि डेटा मनुष्यों द्वारा टाइप किया गया था, या एक अलग सिस्टम, TryParse एक बेहतर विकल्प है, क्योंकि यह एक निश्चित झूठी और एक निश्चित झूठ के बीच सत्य और अंतर को स्वीकार करता है अमान्य निवेश। (MSDN Boolean TryParse)

संबंधित मुद्दे