2011-04-15 7 views
18

यह एक छोटा सा संदेह है: वीबी पर, मैं Dim का उपयोग करके चर घोषित कर सकता हूं। सी # में, मैं var का उपयोग करके घोषणा कर सकता हूं। मैं सी # की जटिलताओं से अधिक परिचित हूं, और मुझे पता है कि var वैरिएबल के प्रकार को निर्धारित करने के लिए प्रकार अनुमान का उपयोग करता है। लेकिन मुझे यकीन नहीं है कि 'मंद' क्या करता है।वीबी की मंद सी # के var के समान है?

मुझे SO पर this question प्रतीत होता है, लेकिन यह दोनों कीवर्ड की तुलना नहीं करता है। यदि कोई अंतर है, तो क्या कोई मुझे बता सकता है?

+1

जो आप पहले से ही पार कर चुके हैं, उसके अलावा अधिक स्पष्टीकरण के लिए, प्रारंभिक बनाम देर से बाध्यकारी शोध करें। कोर में दोनों के बीच यह अंतर है। –

उत्तर

18

यह निर्भर करता है कि Option Infer विशिष्ट है fied। आम तौर पर, निम्नलिखित के बराबर हैं:

'VB.Net 
Dim myVar 
Dim myString = "Hello world!" 
Dim myString2 As String = "Hello world!" 
//C# 
object myVar; 
object myString = "Hello world!"; //Notice type is object, *not* string! 
string myString2 = "Hello world!"; 

हालांकि, Option Infer को सक्षम करने पर, Dim अधिक var जब चर एक ही लाइन पर आरंभ नहीं हो जाता की तरह हो जाता है:

'VB.Net 
Option Infer On 
Dim myVar 
Dim myString = "Hello!" 
//C# 
object myVar; 
var myString = "Hello!"; //Or the equivalent: string myString = "Hello!"; 

ध्यान दें कि इससे कुछ भ्रम पैदा हो सकता है क्योंकि घोषणापत्र के बिंदु पर एक चर को अचानक शुरू करना मतलब है कि इसे बाद में शुरू करने से कुछ अलग है :

'VB.Net 
Option Infer On 
Dim myVar1 
myVar1 = 10 
Dim myVar2 = 10 

myVar1 = New MyClass() 'Legal 
myVar2 = New MyClass() 'Illegal! - Value of type 'MyClass' cannot be converted to 'Integer' 

यह Option Strict है, जो (अन्य बातों के अलावा) सभी चर बलों को सक्षम करने से ठीक किया जा सकता एक प्रकार (परोक्ष या नहीं) घोषणा के समय दिया जाता है।

+0

'विकल्प इनफर ऑन' कोड 'Dim MyVar1'' के साथ अब काम नहीं करता है: 'ऑनफर ऑन' और 'सख्त ऑफ' पारस्परिक रूप से अनन्य हैं (जब तक उन्होंने वीबी 10 में बदल दिया)। –

+0

@ कोनराड: मुझे पूरा यकीन है कि यह सच नहीं है। [विकल्प विकल्प 'के लिए [वीबी 9 दस्तावेज] (http://msdn.microsoft.com/en-us/library/bb384665%28VS.90%29.aspx) स्पष्ट रूप से उल्लेख करता है कि' विकल्प सख्त ''चालू हो सकता है' या 'ऑफ'। इसके अलावा, मैंने अभी इसका परीक्षण किया और यह ठीक काम करता है। –

+0

फिर मेरे पास गलत स्मृति होनी चाहिए। अजीब ... मैं काफी निश्चित था कि संकलक ने शिकायत की कि 'इन्फेर' का उपयोग 'सख्त' के बिना किया गया था। –

14

वे समान नहीं हैं। वीबी में Dim का मतलब है कि निम्नानुसार एक परिवर्तनीय घोषणा है।

उदाहरण के लिए, इन दोनों बराबर हैं:

Dim x As String = "foo" 
string x = "foo" 

C# में, वर का मतलब है कि एक चर घोषणा के प्रकार संकलक उपयोग (initialisation) पर आधारित द्वारा मान लिया जाता है। यह घोषणा के प्रकार को छोड़कर वीबी में भी हासिल किया जा सकता है। बहरहाल, यह भी जरूरी है कि Option Strict और Option Infer सक्रिय हो जाते हैं:

... [वर है] एक:

Dim x = "bar" ' Compiler infers type of x = string 
var x = "bar" // same here. 
1

वहाँ ग # वर के लिए है this from Scott Hanselman

नया कीवर्ड जिसका अर्थ है, "मैं एक चर घोषित करना चाहता हूं, लेकिन मैं ' एम अपने प्रकार को लिखने के लिए बहुत आलसी है। "

एक तरह से वीबी के मंद ऑपरेटर की शक्ति को देखने के लिए कहने के लिए है,

साधन के

मंद तरह, "मैं एक चर घोषित करने के लिए चाहते हैं, लेकिन मैं तुम्हें बहुत यह कैसे बर्ताव करता है के बारे में नहीं बता सकता बाद में तक। "

मंद आपको वास्तविक देर से बाध्यकारी करने देता है जबकि सी # (आज) में आप प्रतिबिंब के साथ देर से बाध्यकारी करते हैं।

0

Dim का मतलब 'आयाम' है, और एक चर घोषित करने के लिए वीबी.Net में उपयोग किया जाता है। इसका मूल रूप से तात्पर्य है 'किसी एक प्रकार के _ _' को पकड़ने के लिए कुछ/पर्याप्त स्थान का पुनर्विक्रय करें। डेटाटाइप बाद में आता है; आमतौर पर एक ही पंक्ति पर।

var सी # में, जैसा आपने बताया है, वास्तव में संकलक को बताए गए मान के आधार पर डेटा प्रकार का अनुमान लगाने के लिए एक शॉर्टकट है।

+0

मैंने सोचा कि इसका मतलब है "स्मृति में घोषित करें" –

+0

@Steve; हाँ, आपको मिल गया! http://stackoverflow.com/questions/1033507/what-does-dim-stand-for-in-visual-basic-and-basic –

0

var कीवर्ड विशेष रूप से डेटाटाइप द्वारा टाइप किया गया है जो इसे चर में निर्दिष्ट किया गया है। लेकिन मंद मंद है जिसे किसी भी प्रकार के लिए उपयोग किया जा सकता है।

+0

var संकलक को बताता है कि आप एक विशिष्ट प्रकार को घोषित करना चाहते हैं कि सी # प्रकार विशिष्ट विशिष्ट प्रकार है जो टाइप/ऑब्जेक्ट का अर्थ है "वीबी से दूर रहें" – MethodMan

2

यह वीबी में निर्भर करता है।नेट आप लिखते हैं

dim x = 1 

तो यह सी # var जैसा ही है।

या आप

dim x as integer = 1 

लिख सकते हैं जो एक ही है के रूप में सी #

int x = 1; 

के रूप में vb.net 9.0 से आप एक इनिशियलाइज़ बयान

साथ प्रकार है की जरूरत नहीं है

http://msdn.microsoft.com/en-us/library/ms364068(v=vs.80).aspx

1

वीबी में Dim कुछ भी नहीं करता है, यह केवल एक कीवर्ड है जिसका अर्थ है कि शेष कथन एक चर घोषित करने के साथ करना है। इसका समय BASIC समय के मिस्ट से कीवर्ड होता है जिसका अर्थ है 'आयाम' जब आप सामान्य चर घोषित नहीं कर सकते थे, लेकिन आपको सरणी के 'आयाम' घोषित करना पड़ा।

यदि, आपके दिमाग की आंख में, आप Dim को अनदेखा करते हैं और जो भी बचा है उसे तुलना करें, आपको वीबी और सी # बहुत समान मिलेगा, सिवाय इसके कि सी # यह गलत तरीका है (आप अनुमान लगा सकते हैं कि मैं किस भाषा के साथ बड़ा हुआ) , सी की तरह, पहले प्रकार को रखता है (या var का उपयोग करता है) और अगला चर का नाम।

संबंधित मुद्दे