यहां कुछ कोड है जो मुझे हर बार परेशान करता है जब मैं इसके बारे में सोचता हूं।वीबी बनाम सी #: यह क्यों संभव है?
Option Strict On
Module Module1
Sub Main()
For Each i As Integer In New String() {"why", "is", "this", "tolerated?"}
' compiles just fine.
Next
End Sub
End Module
सी # बस स्ट्रिंग को पूर्णांक में पूर्ण रूप से परिवर्तित करने की अनुमति नहीं देगा।
class Program {
static void Main(string[] args) {
foreach (int i in new string[] {"that's", "better"}) {
// will not compile, and for good reason.
}
}
}
वीबी हमें ऐसा क्यों करने देता है? मैं इसके साथ मजा करने की कोशिश कर रहा हूं क्योंकि मैं अभी भी अपेक्षाकृत नया हूं, लेकिन मैं भी वास्तव में उत्सुक हूं। मुझे यकीन है कि जवाब के साथ वहाँ devs हैं।
मैंने पोस्ट में 'विकल्प सख्त' कथन शामिल किया था और यह रूपांतरणों को विस्तृत करने और निहित टाइपिंग को अस्वीकार करने के लिए प्रकार रूपांतरणों को प्रतिबंधित करना है, फिर भी यह अभी भी संकलित है। – scottyeatscode
@mellamokb, जैसा ओपी दिखाया गया है, यह 'विकल्प सख्त ऑन' के साथ भी काम करता है। – jmcilhinney
यह एक अच्छा मुद्दा है। [इस ब्लॉग पोस्ट] के अनुसार [http://www.owenpellegrin.com/articles/vb-net/converting-strings-to-numbers/) 'विकल्प सख्त बंद' के साथ भी इसे तारों के अंतर्निहित रूपांतरण की अनुमति नहीं देनी चाहिए वैध संख्यात्मक मान नहीं, इसलिए यहां कुछ और हो रहा है।** संपादित करें **: मैंने अभी LINQPad के साथ इसे जल्दी से परीक्षण किया है और यह संकलित प्रतीत नहीं होता है ... आप इसका परीक्षण क्यों कर रहे हैं जहां आपको कंपाइलर त्रुटियां नहीं मिलती हैं? – mellamokb