2008-09-25 7 views
283

में बूल और बूलियन प्रकारों के बीच क्या अंतर है bool और Boolean प्रकार सी # में क्या अंतर है?सी #

उत्तर

327

boolSystem.Boolean के लिए उपनाम है जैसे intSystem.Int32 के लिए उपनाम है। यहां उपनामों की पूरी सूची देखें: Built-In Types Table (C# Reference)

+4

उपर्युक्त लिंक से माइक्रोसॉफ्ट का कहना है कि सी # प्रकार के कीवर्ड और उनके उपनाम एक दूसरे के बदले हैं, लेकिन हमें एलियस की आवश्यकता क्यों है, मेरे दृष्टिकोण से बूलियन अधिक सार्थक है तो बूल और इंट 32 अधिक सार्थक है तो फिर inti क्यों ??? –

+5

@asim: आलस्य? यह कम टाइपिंग है और सिस्टम आयात करने की आवश्यकता से बचाता है। व्यक्तिगत रूप से, मैं उपनाम पसंद करते हैं। "Int" टाइपिंग "Int32" टाइप करने से कहीं अधिक तेज है। –

+7

@asmin: यह एक सी बात है। int, float आदि सी और सी ++ प्रोग्रामर के लिए परिचित कीवर्ड हैं, इसलिए माइक्रोसॉफ्ट ने स्थिरता के लिए इन उपनामों का उपयोग करने का फैसला किया। –

41

मैं नहीं मानता कि वहाँ एक है।

bool बस के लिए System.Boolean

22

वे एक ही में एक हैं एक उपनाम है। बूलियन के लिए बूल सिर्फ एक उपनाम है।

9

एक दूसरे के लिए उपनाम है।

13

वे एक ही हैं। बूलियन सी # और वीबी.Net के बीच रूपांतरण को सरल बनाने में मदद करता है। अधिकांश सी # प्रोग्रामर 'bool' पसंद करते हैं, लेकिन जहां दोनों VB.Net और सी # एक बहुत हो, तो आप एक दुकान में हैं तो आप बूलियन पसंद कर सकते हैं क्योंकि यह दोनों स्थानों में काम करता है।

8

जैसा कि कहा गया है, वे वही हैं। दो हैं क्योंकि बूल एक सी # कीवर्ड और बूलियन एक नेट क्लास है।

+0

तो क्रॉस-प्लेटफार्म संगतता के लिए बेहतर नहीं होगा? –

5

बूल बूलियन वर्ग के लिए उपनाम है। कक्षा में एक विधि को कॉल करते समय एक चर और वर्ग नाम घोषित करते समय मैं उपनाम का उपयोग करता हूं।

+7

ब्याज से - आप दोनों का उपयोग क्यों करेंगे? मैं एक या दूसरे का उपयोग करने का समर्थन करता हूं। या तो उपनाम का उपयोग करें या नहीं, अन्यथा कोड गन्दा और असंगत दिखता है। –

+2

मुझे लगता है कि जब आप दोनों का उपयोग नहीं करते हैं तो यह गन्दा लग रहा है। डेटाटाइप घोषित करने के लिए उपनाम का उपयोग करें और स्थिर विधियों तक पहुंचने पर actuall क्लास नाम का उपयोग करें: स्ट्रिंग x = स्ट्रिंग.फॉर्मैट ("आज है: {0}", डेटटाइम.अब); –

+1

तो आप करेंगे: int i = Int32.Parse (...); ? मुझे इसके साथ कुछ समस्याएं हैं। सबसे पहले, वीएस डिफ़ॉल्ट रूप से अलग-अलग हाइलाइट करेगा (मुझे पता है कि आप इसे बदल सकते हैं लेकिन अधिकांश देव सिर्फ डिफ़ॉल्ट सिंटैक्स हाइलाइटिंग का उपयोग करते हैं)। दूसरा, खोज विशेष रूप से लंबी (लंबी/int64) के साथ कठिन है। –

13

मुझे पता है यह कई साल बाद है, लेकिन मैं एक ही सवाल के साथ गूगल से इस पृष्ठ भर में ठोकर खाई।

अब तक एमएसडीएन पृष्ठ पर एक मामूली अंतर है।

VS2005

नोट:

आप एक बूलियन चर भी अशक्त, उपयोग bool के मूल्य हो सकता है की आवश्यकता होती है। अधिक जानकारी के लिए, Nullable प्रकार (सी # प्रोग्रामिंग गाइड) देखें।

VS2010

नोट:

आप एक बूलियन चर भी अशक्त, उपयोग bool के मूल्य हो सकता है की आवश्यकता होती है ?. अधिक जानकारी के लिए, Nullable प्रकार (सी # प्रोग्रामिंग गाइड) देखें।

+2

मुझे इस तक फिसल गया था - यह प्रलेखन में एक बग प्रतीत होता है। मैंने पहले वीएस2005 पेज देखा (यह मेरे लिए Google रैंकिंग में अधिक दिखाई देता है!), और सोचा कि यह इंगित करता है कि 'बूल' में शून्य हो सकती है, लेकिन 'बूलियन' नहीं हो सका। यद्यपि पुराने से नए दस्तावेज तक एक लिंक है, फिर भी मैंने एकल दस्तावेज को ध्यान में रखते हुए नए दस्तावेज को पर्याप्त रूप से पर्याप्त नहीं पढ़ा। –

+0

Am खेद है, लेकिन यह गलत है, तो आप अशक्त करने के लिए bool या Bolean परिवर्तित नहीं कर सकते क्योंकि वे नल प्रकार के होते हैं – devTimmy

-1

"बूलियन" एक struct कि तरीकों में शामिल है (उदाहरण के बराबर (बूलियन) & FalseString())। "बूल" एक डेटा प्रकार है जिसमें केवल 0 या 1 होता है।

(देखें: http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.BOOLEAN);k(BOOLEAN);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true)

-1

शायद bool एक बालक "हल्का" बूलियन से है; दिलचस्प बात यह है इस बदलते:

namespace DuckbillServerWebAPI.Models 
{ 
    public class Expense 
    { 
     . . . 
     public bool CanUseOnItems { get; set; } 
    } 
} 

... यह करने के लिए:

namespace DuckbillServerWebAPI.Models 
{ 
    public class Expense 
    { 
     . . . 
     public Boolean CanUseOnItems { get; set; } 
    } 
} 

... की वजह से एक अंकुर मेरी सीएस फ़ाइल "सिस्टम का उपयोग कर," टाइप को "बूल" में बदलने से ग्राउंड को चालू करने के लिए क्लॉज के बाल का उपयोग किया जाता है।

(विजुअल स्टूडियो 2010, वेबएपीआई परियोजना)

1

ध्यान दें कि Boolean केवल काम थे आप using System; है (जो आमतौर पर है, लेकिन जरूरी नहीं कि, शामिल है) (जब तक आप यह System.Boolean के रूप में बाहर लिखना)। bool की आवश्यकता नहीं है using System;

2

वे वही हैं, बूल बस सिस्टम है। बोलेन छोटा हो गया है। जब आप एक वीबीनेट प्रोग्रामर के साथ होते हैं तो बूलियन का उपयोग करें, क्योंकि यह सी # और वीबी

0

बूल एक आदिम प्रकार है, जिसका अर्थ यह है कि मूल्य (सत्य/गलत) इस मामले में सीधे संग्रहीत किया जाता है। बूलियन एक वस्तु है। बूलियन प्रकार का एक चर एक बूलियन ऑब्जेक्ट का संदर्भ संग्रहीत करता है। एकमात्र वास्तविक अंतर भंडारण है। एक वस्तु हमेशा एक प्राचीन प्रकार की तुलना में अधिक स्मृति लेती है, लेकिन हकीकत में, आपके सभी बूलियन मानों को बूल में बदलना स्मृति उपयोग पर कोई ध्यान देने योग्य प्रभाव नहीं होने वाला है।

मैं गलत था; इस तरह यह जूल में बुलियन और बूलियन के साथ काम करता है। सी # में, बूल और बूलियन दोनों संदर्भ प्रकार हैं। उनमें से दोनों अपने मूल्य को सीधे चर में संग्रहीत करते हैं, उनमें से दोनों शून्य नहीं हो सकते हैं, और उनमें से दोनों को अपने मूल्यों को किसी अन्य प्रकार (जैसे int) में संग्रहीत करने के लिए "कन्वर्ट टीओ" विधि की आवश्यकता होती है। यह केवल तभी मायने रखता है जब आप बूलियन वर्ग के भीतर परिभाषित स्थिर फ़ंक्शन को कॉल करने की आवश्यकता रखते हैं।

+0

'bool' और' Boolean' दो अलग अलग प्रकार नहीं कर रहे हैं, कि एक प्रकार एक संदर्भ प्रकार नहीं है, आप एक स्थिर विधि कॉल कर सकते हैं उस * एक * प्रकार पर पहचानकर्ता का उपयोग करके, और आपको वास्तव में किसी अन्य प्रकार में परिवर्तित करने के लिए 'कनवर्टो' विधि को कॉल करने की आवश्यकता नहीं है। – Servy

+1

यह सही नहीं है कि "बूल' और 'बूलियन' दोनों संदर्भ प्रकार हैं"। 'बूल' और' बूलियन 'शब्द दोनों एक ही प्रकार का संदर्भ देते हैं, और वह प्रकार एक मान प्रकार है, संदर्भ प्रकार नहीं। –

+0

धन्यवाद, मैं यह जांचने की कोशिश कर रहा था कि सी # ने इस क्षेत्र में जावा के समान कार्य किया है या नहीं। आप जवाब केवल एकमात्र है जो इसे जावा से तुलना करता है (भले ही जानबूझकर नहीं)। :) – bvdb

-1

बूल बूलियन के लिए उपनाम है। कोड को संकलित करने से ठीक पहले, क्या उपनाम टेक्स्ट की एक स्ट्रिंग को दूसरे (जैसे खोज/प्रतिस्थापन-नोटपैड ++ में) से प्रतिस्थापित करता है। दूसरे पर एक का उपयोग रन-टाइम पर कोई प्रभाव नहीं पड़ता है।

अन्य भाषाओं में, एक आदिम प्रकार होगा और दूसरा ऑब्जेक्ट प्रकार (मूल्य प्रकार और संदर्भ प्रकार सी # शब्दकोष) होगा। सी # आपको दोनों के बीच चयन करने का विकल्प नहीं देता है। जब आप बूलियन कक्षा में परिभाषित एक स्थिर विधि को कॉल करना चाहते हैं, तो यह ऑटो-जादुई रूप से संदर्भ प्रकार के रूप में बूलियन का इलाज करता है। यदि आप एक नया बूलियन वैरिएबल बनाते हैं, तो यह ऑटो-जादुई रूप से संदर्भ प्रकार के रूप में व्यवहार करता है (जब तक कि आप एक्टिवेटर का उपयोग नहीं करते हैं। क्रिएट इंस्टेंस विधि)।

+0

बूलियन एक मान प्रकार है, संदर्भ प्रकार नहीं। – Servy