सी # और वीबी.नेट के बीच सबसे महत्वपूर्ण कार्यात्मक अंतर क्या हैं?

निश्चित रूप से सामान्य वाक्यविन्यास में अंतर है, लेकिन अन्य महत्वपूर्ण भेद क्या मौजूद हैं? कुछ मतभेद हैं, है ना?

0
ro fr bn
मुझे लगता है कि इस मुद्दे पर एक धार्मिक बहस की कमी यह संकेत है कि वे कितने समान हैं। :)
जोड़ा लेखक EBGreen, स्रोत

14 उत्तर

जुड़ा हुआ तुलना बहुत अच्छी तरह से है, लेकिन जहां तक ​​मुख्य मतभेद मैं निम्नलिखित नोट करता हूं:

  • C# has anonymous methodsVB has these now, too
  • C# has the yield keyword (iterator blocks)VB11 added this
  • VB supports implicit late binding (C# has explicit late binding now via the dynamic keyword)
  • VB supports xml literals
  • VB is case insensitive
  • More out-of-the-box code snippets for VB
  • More out-of-the-box refactoring tools for C#Visual Studio 2015 now provides the same refactoring tools for both VB and C#.

आम तौर पर एमएस प्रत्येक भिन्नता के लिए ध्यान केंद्रित करता है, क्योंकि दोनों भाषाओं को बहुत अलग दर्शकों पर लक्षित किया जाता है। इस ब्लॉग पोस्ट में लक्षित ऑडियंस का एक अच्छा सारांश है। यह निर्धारित करना शायद एक अच्छा विचार है कि आप कौन से दर्शक हैं, क्योंकि यह निर्धारित करेगा कि आप माइक्रोसॉफ्ट से किस तरह के टूल्स प्राप्त करेंगे।

0
जोड़ा
हे एंड्रे_एसएस 6, मुझे यकीन नहीं है कि आपका संपादन क्यों अस्वीकार कर दिया गया है, मैं इसे स्वीकार करना चाहता था लेकिन 3 मूर्खों ने इसे पहले से ही खारिज कर दिया था। मैं इसे खुद ठीक करने जा रहा हूं।
जोड़ा लेखक Luke, स्रोत
सी # अब गतिशील कीवर्ड के माध्यम से देर से बाइंडिंग के एक रूप का भी समर्थन करता है। यह अभी भी VB.Net से अलग है: वीबी में आप प्रोजेक्ट स्तर पर या फ़ाइल स्तर पर या तो 'विकल्प सख्त' चालू या बंद करके बाध्यकारी की अनुमति देते हैं। सी # में, देर से बाध्यकारी समर्थन गतिशील कीवर्ड के उपयोग के माध्यम से, अधिक स्पष्ट (कथन स्तर पर) है।
जोड़ा लेखक jeroenh, स्रोत
वीबी में गुमनाम कार्य हैं, बस जब तक वे एक मूल्य वापस करते हैं। अज्ञात विधि जैसी कोई चीज़ नहीं है। परिभाषा के अनुसार, एक विधि एक नामित कार्य है जो स्पष्ट रूप से ऑब्जेक्ट संदर्भ लेता है।
जोड़ा लेखक Jonathan Allen, स्रोत
वीबी में उपज कीवर्ड नहीं है जो सी # का समर्थन करता है
जोड़ा लेखक AlwaysAProgrammer, स्रोत
जोड़ा लेखक kodkod, स्रोत
जैसा कि अन्य ने इंगित किया है, वीबी में यील्ड कीवर्ड भी है, इसे वीबी 11 में जोड़ा गया था। इसके अलावा, सी # गतिशील प्रकार के माध्यम से अंतर्निहित देर से बाध्यकारी का समर्थन करता है (सी # 4); यह विकल्प सख्त बंद के साथ वीबी में ऑब्जेक्ट प्रकार जैसा व्यवहार करता है। और, आखिरकार, वीएस 2015 सी # और वीबी दोनों के लिए एक ही रिफैक्टरिंग टूल सक्षम करता है।
जोड़ा लेखक andre_ss6, स्रोत

जब यह आईएल में जाता है तो यह सब सिर्फ बिट्स होता है। वह मामला असंवेदनशीलता सिर्फ एक प्रीकंपेलर पास है। लेकिन आम सहमति है, वीबी अधिक verbose है। यदि आप सी # लिख सकते हैं तो अपनी आंखों और हाथों को क्यों न बचाएं और उसी चीज को करने के लिए कोड की छोटी मात्रा लिखें।

0
जोड़ा

.NET 2.0 जारी होने के बाद से इस विषय में बहुत अधिक समय था। एक पठनीय सारांश के लिए यह विकिपीडिया आलेख देखें।

0
जोड़ा

चूंकि मुझे लगता है कि आप Google कर सकते हैं, मुझे नहीं लगता कि अधिक साइटों के लिए एक लिंक वह है जिसे आप ढूंढ रहे हैं।

मेरा उत्तर: अपने डेवलपर्स के इतिहास पर आधार चुनें। सी # अधिक जावा है, और शायद सी ++ पसंद है। वीबी प्रोग्रामर वीबी प्रोग्रामर के लिए आसान था, लेकिन मुझे लगता है कि अब कोई मुद्दा नहीं है कि पुराने वीबी से आने वाले कोई भी नया .NET प्रोग्रामर नहीं हैं।

मेरी राय यह है कि वीबी अधिक उत्पादक है तो सी #, ऐसा लगता है कि उत्पादकता उपकरण (जैसे इंटेलिजेंस) के मामले में यह हमेशा आगे है, और मैं पूछताछ करने वाले किसी व्यक्ति को vb से vb की अनुशंसा करता हूं। बेशक, कोई जानता है कि वह सी # पसंद नहीं करता है, और सी # शायद उसके लिए सही विकल्प है।

0
जोड़ा
आप बहुत कुछ मानते हैं;)
जोड़ा लेखक Ant, स्रोत

इसे वाक्यविन्यास माना जा सकता है, लेकिन VB.NET केस में संवेदनशील है जबकि सी # केस संवेदनशील है।

0
जोड़ा
मैं इसे एक विशेषता नहीं मानता ...
जोड़ा लेखक Michael Haren, स्रोत
ओह यह एक सुविधा है। आगे बढ़ें, कोड के ढेर को डिबग करने का प्रयास करें जहां आपके पास इंट्राउंटर और इंट काउंटर दो अलग-अलग चर हैं। दोनों के बीच कोई अंतर नहीं होना चाहिए। केस संवेदनशीलता उन दिनों से बचे हुए हैं जब कंप्यूटिंग पावर अधिक महंगी थी (और एक रेखा को पार करना जहां "ए" <> "ए" यह पता लगाने से तेज़ है कि वे वास्तव में वही हैं)।
जोड़ा लेखक David, स्रोत

One glaring difference is in how they handle extension methods (Vb.Net actually allows something that C# doesn't - passing the type on which the extension method is being defined as ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

0
जोड़ा

One glaring difference is in how they handle extension methods (Vb.Net actually allows something that C# doesn't - passing the type on which the extension method is being defined as ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

0
जोड़ा
बहुत बुरा कोई चेतावनी नहीं है अगर कोई केवल पढ़ने के संदर्भ में ऐसी एक्सटेंशन विधि का उपयोग करने का प्रयास करता है (संकलक मूल्य की प्रतिलिपि बनाता है और प्रतिलिपि को ref पैरामीटर - grr के रूप में पास करता है)।
जोड़ा लेखक supercat, स्रोत

This is a very comprehensive reference.

0
जोड़ा

सिंटैक्स के अलावा इतना कुछ नहीं। वे दोनों एक ही आईएल के लिए संकलित करते हैं, इसलिए आप कुछ को वीबी के रूप में संकलित कर सकते हैं और इसे सी # में प्रतिबिंबित कर सकते हैं।

अधिकांश स्पष्ट मतभेद सिंटेक्टिक चीनी हैं। उदाहरण के लिए वीबी गतिशील प्रकारों का समर्थन करता प्रतीत होता है, लेकिन वास्तव में वे सी # के रूप में स्थिर हैं - वीबी संकलक उन्हें आंकड़े बताते हैं।

विजुअल स्टूडियो सी # के मुकाबले वीबी के साथ अलग-अलग व्यवहार करता है - यह बहुत सारी कार्यक्षमता छुपाता है लेकिन पृष्ठभूमि संकलन (छोटी परियोजनाओं के लिए बढ़िया, बड़े लोगों के लिए संसाधन होगिंग) और बेहतर स्निपेट समर्थन जोड़ता है।

सी # 3 वीबी.Net में अधिक से अधिक कंपाइलर 'जादू' के साथ वास्तव में पीछे गिर गया है। वीबी की एकमात्र चीज अब है कि सी # हैंडल कीवर्ड नहीं है - और यह बहस योग्य लाभ है।

@Tom - that really useful, but a little out of date - VB.Net now supports xml docs too with '''

@Luke - VB.Net में अभी भी एनन-विधियां नहीं हैं, लेकिन अब लैम्बडा का समर्थन करती है।

0
जोड़ा
आह, हाँ, ज़ाहिर है। वीबी इनलाइन एक्सएमएल का समर्थन करता है - मुझे अभी भी डेटा और कोड को मिश्रण करने के लाभ के बारे में निश्चित नहीं है।
जोड़ा लेखक Keith, स्रोत
आप पूरी तरह से वीबी के एक्सएमएल समर्थन को भूल जाते हैं।
जोड़ा लेखक Jonathan Allen, स्रोत

मेरी राय में सबसे बड़ा अंतर सी # में असुरक्षित कोड लिखने की क्षमता है।

0
जोड़ा

हालांकि वीबीएनईटी कोशिश करता है ... पकड़ प्रकार अपवाद हैंडलिंग, यह अभी भी वीबी 6 के ऑन त्रुटि के समान कुछ है। त्रुटि पर गंभीरता से दुर्व्यवहार किया जा सकता है, और अधिकांश मामलों में, कोशिश करें ... पकड़ बहुत बेहतर है; लेकिन COM टाइम-आउट ऑपरेशंस को संभालने पर त्रुटि पर उपयोगी हो सकता है जहां त्रुटि फंस सकती है, डीकोड की जा सकती है, और अंतिम "पुनः प्रयास करें" एक साधारण एक पंक्ति है। आप कोशिश कर सकते हैं ... पकड़ो लेकिन कोड बहुत गड़बड़ है।

0
जोड़ा

हां वीबीएनईटी ने अधिकांश वीबी 6 समस्याओं को ठीक किया और इसे उचित ओओपी भाषा बना दिया - यानी। सी # के लिए क्षमताओं में समान। AlthougnI सी # पसंद करते हैं, मुझे COM इंटरऑप टाइमआउट को संभालने के लिए उपयोगी पुराने वीबी ऑन एरर निर्माण मिलता है। बुद्धिमानी से उपयोग करने के लिए कुछ - ऑन त्रुटि पर आसानी से दुर्व्यवहार किया जाता है !!

0
जोड़ा

Scott Hanselman recently wrote an interesting article contrasting var and Dim: Back to Basics: var != Dim

0
जोड़ा

इस विषय को विकिपीडिया और कड़ी मेहनत पर संक्षेप में वर्णित किया गया है।

http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

बस उस पर जाएं और अपने नोट्स बनाओ।

0
जोड़ा