2011-11-16 8 views
14

में तत्काल विंडो व्यवहार अंतर मैंने देखा है कि वी # 2010 में तत्काल विंडो सी # प्रोजेक्ट और वीबी.नेट परियोजना को डीबग करते समय अलग-अलग व्यवहार करती है, हालांकि मुझे कोई विशिष्ट दस्तावेज नहीं मिला है यह अंतरसी # और वीबीएनईटी

सी # परियोजनाओं के लिए, मैं बस किसी भी अभिव्यक्ति में टाइप कर सकते हैं, और यह मूल्यांकन किया जाएगा और दिखाया गया, में

foo.bar यानी टाइपिंग == "baz"

इच्छा उत्पादन

झूठी

VB.NET में, ज ओवेवर, वही काम करने से कुछ भी आउटपुट नहीं होता है।

मुझे इसे काम करने के लिए अभिव्यक्ति के सामने एक प्रश्न चिह्न रखना होगा।

foo.bar = "baz" स्पष्टता के लिए

झूठी

संपादित करें और मेरा बुरा उपरोक्त उदाहरण:

अन्य सभी भाव एक ही व्यवहार प्रदर्शन, सरल गणित ऐसे सहित '1 + 2' के रूप में। कभी-कभी त्रुटि संदेश अलग होता है, क्योंकि त्रुटि में 1 + 2 परिणाम 'लेबल जो संख्याएं हैं, उन्हें कॉलन द्वारा पालन किया जाना चाहिए।'

क्या इस व्यवहार को 'ठीक करने' का कोई तरीका है और VB.NET तत्काल विंडो को C# एक जैसा व्यवहार करना है? टाइप करने के लिए? प्रत्येक कथन के सामने अक्सर इसका उपयोग करते समय दर्द हो सकता है।

उत्तर

14

तत्काल खिड़कियों के अर्थशास्त्र सिर्फ अलग हैं। सी # में, आपके द्वारा दर्ज की गई किसी भी अभिव्यक्ति या कथन का मूल्यांकन किया जाता है, और मूल्यांकन का नतीजा खिड़की पर मुद्रित होता है। वीबी.नेट में, आपको एक पूर्ण बयान दर्ज करना होगा; आप एक नंगे अभिव्यक्ति दर्ज नहीं कर सकते हैं। आपके उदाहरण में, जैसा कि आपने पाया है, आपको 'प्रिंट' कथन (उपनाम जिसके लिए ? है) का उपयोग करने की आवश्यकता है यदि आप विंडो में कुछ भी प्रिंट करना चाहते हैं।

इसका एक कारण यह है कि भाषाओं का अर्थशास्त्र अलग है। बॉब कौफमैन ने उल्लेख किया है, = असाइनमेंट ऑपरेटर या समानता परीक्षण हो सकता है। यदि वीबी.नेट विंडो सी # विंडो की तरह काम करती है, तो यह निर्धारित करने का कोई तरीका नहीं होगा कि a = b का अर्थ है "बी को असाइन करें" या "मूल्यांकन करें कि बी बराबर है या नहीं"।

असाइनमेंट का मूल्य VB.NET में नहीं है; a = b = 4 का अर्थ है "मूल्यांकन करें कि बी 4 के बराबर है, और उस मूल्यांकन के परिणाम को ए को असाइन करें।" इसका मतलब है कि एक इच्छा या तो सच या गलत के बराबर होगी।

सी # में, एक आकलन भी मूल्य के साथ एक अभिव्यक्ति है, इसलिए a = b = 4 का अर्थ है "मान 4 को बी असाइन करें, और अभिव्यक्ति के मान को निर्दिष्ट करें (बी = 4) ए।" इसका मतलब है कि एक 4 के बराबर होगा।

+0

धन्यवाद, यह बहुत समझ में आता है। हालांकि यह अभी भी एक दर्द है, खासकर सरल संपत्ति मूल्यांकन के लिए। –

+1

तो मूल रूप से, बस अपने बयान के सामने ''' रखें' – levininja

+0

@levininja बिल्कुल; सवाल कम या ज्यादा है "यह जरूरी क्यों है?" – phoog

5

तत्काल विंडो पार्सर कथन की अपेक्षा करता है यदि आप इसका उपयोग नहीं करते हैं? आदेश। आदेश

foo.bar = "baz" 

vb में कानूनी है।नेट, यह एक असाइनमेंट स्टेटमेंट है, जो बार ऑब्जेक्ट की फ़ील्ड या प्रॉपर्टी को "baz" मान देता है। हालांकि यह शिकायत करने जा रहा है कि बार कक्षा का एक तरीका है। इसी प्रकार, "1 + 2" vb.net में मान्य कथन नहीं है, है? आदेश दुभाषिया को यह समझने में मदद करता है कि आप एक अभिव्यक्ति का मूल्यांकन करना चाहते हैं। = ऑपरेटर को एक तुलना ऑपरेटर में असाइनमेंट से चालू करने के लिए, आपको पार्सर को यह समझना होगा कि एक अभिव्यक्ति का मूल्यांकन किया जा रहा है। ? की आवश्यकता है। "1 + 2" के लिए वही बात, vb.net कथन पार्सर एक बयान के रूप में एक कथन की शुरुआत में एक संख्या स्वीकार करता है, जो एक गोटो के लिए उपयुक्त है।

सी # भाषा घुंघराले ब्रेस भाषा मानक का पालन करती है जहां कोई अभिव्यक्ति भी एक वैध कथन है। तो "1 + 2" को बिना किसी सहायता के वैध कथन के रूप में व्याख्या किया गया है? समानता ऑपरेटर (==) के लिए इसे अलग प्रतीक की भी आवश्यकता है, एक पार्सर अन्यथा असाइनमेंट कथन और अभिव्यक्ति के बीच अंतर नहीं जानता है।

+0

अतिरिक्त स्पष्टीकरण के लिए धन्यवाद! –