2010-06-09 8 views
48

वीबीएनईटी में तारों को जोड़ने के लिए एम्परस बनाम प्लस के बजाय स्ट्रिंग को जोड़ने के लिए & का उपयोग करने का कोई फायदा है?वीबीएनईटी

उदाहरण

Dim x as String = "hello" + " there" 

बनाम

Dim x as String = "hello" & " there" 

हाँ, मैं स्ट्रिंग concatenations मैं StringBuilder का उपयोग करना चाहें का एक बहुत के लिए जानते हैं

, लेकिन यह एक सामान्य प्रश्न के और अधिक है।

+1

@ टिम - धन्यवाद, मैंने खोज की लेकिन किसी भी तरह से यह नहीं मिला, इसे पोस्ट करने के लिए धन्यवाद। – dcp

उत्तर

34

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

दो तर्क मैं अभी याद & पक्ष लेने के लिए:

  • आप Option Strict उपयोग नहीं कर रहे हैं और दो सांख्यिक तार है, यह संकलक साथ + ऑपरेटर की के अपने अर्थ भ्रमित करने के लिए आसान है, आप जानते हैं, अंकगणित जोड़
  • यदि आप बहुत पुराने पुराने vb6-era कोड को अपडेट कर रहे हैं तो यह concatenation ऑपरेटरों को परिवर्तित करने में मदद नहीं करता है (और याद रखें: हम स्थिरता चाहते हैं)।

और के लिए +:

  • आप एक मिश्रित vb/सी # दुकान है, तो यह अच्छा है करने के लिए केवल एक ही संयोजन ऑपरेटर है। भाषाओं और अर्थों के बीच कोड को स्थानांतरित करना आसान बनाता है, जो कि
  • & वीबी के लिए लगभग अनूठा है, जबकि स्ट्रिंग्स के बीच कई भाषाओं में समेकन के बीच समीकरण समझा जाता है, , तो आप पठनीयता में थोड़ा सा हासिल करते हैं।
+10

स्ट्रिंग concatenation के लिए '&' के साथ एक समस्या है। [प्रलेखन] से (http://msdn.microsoft.com/en-us/library/te2585xw.aspx) "ऑप्शन सख्त की सेटिंग के बावजूद," ऑपरेटर हमेशा अपने ऑपरेटरों को स्ट्रिंग पर विस्तृत करता है "। तो उदाहरण के लिए 'हैलो "और 2.5' क्षेत्रीय सेटिंग्स का उपयोग करके 2.5 को एक स्ट्रिंग में चुपचाप रूपांतरित कर देगा (आपको' 2.5 "' या '" 2,5 "' मिल सकता है)। ठीक है अगर वह वही था जो आप चाहते थे। मैं इसे अधिक स्पष्ट रूप से निर्दिष्ट करने के लिए मजबूर होना चाहूंगा। – MarkJ

+12

@ मार्कज असल में वीबीएनईटी सी # से भी बेहतर कदम पर है, क्योंकि कम से कम आपके पास '&' का उपयोग करने का विकल्प है। सी # में, स्ट्रिंग कॉन्सटेनेशन * हमेशा * एक अंतर्निहित 'ToString' निष्पादित कर सकता है, और इसे बंद करने का कोई तरीका नहीं है। मैं आपको नहीं बता सकता कि मुझे इससे कितना नफरत है। वीबी.नेट को देखने में खुशी हुई यह एक सही (चौंकाने वाला!) –

5

मुझे लगता है यह ऐतिहासिक है और स्वाद के एक मामले (गैर .NET विजुअल बेसिक &, यकीन नहीं क्यों वे शुरू की + का उपयोग करता है) (मैं पसंद & क्योंकि हम तार जोड़, हम उन्हें नहीं जोड़ते हैं ...) ।

+1

अंकगणितीय ऑपरेटरों के साथ अधिभारित होने के अर्थ के बारे में अच्छा बिंदु, जबकि आमतौर पर इसका मतलब है "और"। –

+0

हम तारों को जोड़ते हैं, हम थोड़ा सा नहीं करते हैं-और उन्हें। अफसोस की बात है, इनमें से कोई भी ऑपरेटर विकल्प ओवरलोडेड अर्थ से मुक्त नहीं है। – ESV

+0

@ESV मुझे नहीं लगता कि विजुअल बेसिक (.NET से पहले) में बिटवाई ऑपरेटर थे, इसलिए वहां कोई ओवरलोडेड अर्थ नहीं था। लेकिन वास्तव में, तर्क अन्य भाषाओं के लिए और भाषाओं के लिए शून्य है। – PhiLho

10

& का उपयोग करना सुरक्षित है क्योंकि आप कंपाइलर को अपना इरादा स्पष्ट कर रहे हैं (मैं इन दो मानों को जोड़ना चाहता हूं और उन्हें दोनों तारों में परिवर्तित किया जाना चाहिए)।

+ का उपयोग करना अगर स्ट्रिंग संख्यात्मक मान हैं, तो कम से कम अगर विकल्प सख्त बंद हो जाता है तो बग को खोजने में कठिनाई हो सकती है।

उदाहरण के लिए:

1 + "1" = 2 ' this fails if option strict is on 
1 & "1" = 11 

संपादित करें: हालांकि यदि आप एक गैर स्ट्रिंग श्रृंखलाबद्ध रहे हैं तो आप शायद वैसे भी कुछ बेहतर तरीका इस्तेमाल करना चाहिए।

11

VB.NET में मैं स्ट्रिंग concatenations के लिए & उपयोग करने को प्राथमिकता इस बात के लिए

एक कारण यह किसी भी भ्रम, उदा,

MessageBox.Show(1 & 2) ' "12" 
MessageBox.Show(1 + 2) ' 3 
+2

यह केवल 'विकल्प सख्त' बंद के साथ एक समस्या है। –

+4

अच्छा बिंदु - हालांकि मुझे लगता है कि डिफ़ॉल्ट बंद है? – codingbadger

+4

हाय बैरी, प्रत्येक उदाहरण के परिणाम को भी कम करना अच्छा हो सकता है। जैसे टिप्पणी के रूप में '// "12" 'बनाम' //" 3 "'। यह उन लोगों के लिए आपके बिंदु को स्पष्ट करने में मदद करेगा, जो अभी तक अंतर नहीं जानते हैं। – Levit

37

Micorosoft के preference वीबी progammers स्ट्रिंग्स के लिए & का उपयोग करने के लिए, नहीं + है।

आप तारों को संयोजित करने के लिए + ऑपरेटर का भी उपयोग कर सकते हैं। हालांकि, अस्पष्टता को खत्म करने के लिए, आपको इसके बजाय & ऑपरेटर का उपयोग करना चाहिए।

+2

ग्रेट लिंक, धन्यवाद! व्यक्तिगत राय के बजाय एमएसडीएन दस्तावेज़ों का उपयोग करने के लिए – dcp

+2

+1! दोनों वैध हैं, लेकिन केवल एक ऑफिकल है। :) आप http://ksdn.microsoft.com/en-us/library/wfx50zyk.aspx पर दस्तावेज़ों से लिंक करना भी चाह सकते हैं –