संभव डुप्लिकेट:
Difference between “var” and “object” in C#वर वस्तु बनाम
मैं वर और वस्तु के बीच अंतर पता करना चाहते हैं।
वारा का उपयोग कब करें और ऑब्जेक्ट का उपयोग कब करें।
पेशेवरों और उनका उपयोग करने के विपक्ष।
संभव डुप्लिकेट:
Difference between “var” and “object” in C#वर वस्तु बनाम
मैं वर और वस्तु के बीच अंतर पता करना चाहते हैं।
वारा का उपयोग कब करें और ऑब्जेक्ट का उपयोग कब करें।
पेशेवरों और उनका उपयोग करने के विपक्ष।
var
"कंपेलर को मेरे लिए सही चर प्रकार चुनने दें" के लिए सिर्फ शॉर्टेंड है (संकलन-समय प्रकार-अनुमान अधिक सटीक शब्द है)।
object
, दूसरी ओर, एक विशिष्ट प्रकार है; अन्य सभी संदर्भ प्रकार object
से प्राप्त होते हैं, इसलिए आप object
प्रकार के चर के लिए कुछ भी असाइन कर सकते हैं।
के समान ही दिखता है जब तक कि यह एक आदिम नहीं है, इस स्थिति में इसे निर्दिष्ट करने से पहले इसे बॉक्स किया जाना चाहिए 'ऑब्जेक्ट' संदर्भ। –
मुझे लगता है कि चयनित उत्तर में जो कुछ जोड़ा जाना चाहिए वह यह है कि यदि आप var
का उपयोग करते हैं तो @Ben Voigt ने कहा, आप इसे कास्ट किए बिना var में संग्रहीत ऑब्जेक्ट में चीजें कर सकते हैं। –
Eric
var
जवाब जब आप पाते हैं अपने आप को पूछ, मैं सच में दो बार है कि लंबे समय के प्रकार का नाम टाइप करने के लिए .: e.g में,
Dictionary<string, Func<List<Func<int, int, double>>, IEnumerable<Tuple<double, string>>>> myDict = new Dictionary<string, Func<List<Func<int, int, double>>, IEnumerable<Tuple<double, string>>>>();
क्यों नहीं दोस्त, तुम नहीं है तुम्हारे पास है। बजाय var
का उपयोग करें:
var myDict = new Dictionary<string, Func<List<Func<int, int, double>>, IEnumerable<Tuple<double, string>>>>();
अब myDict
वास्तव में एक Dictionary<string, Func<List<Func<int, int, double>>, IEnumerable<Tuple<double, string>>>>
है, तो आप इसे करने के लिए चीजों को जोड़ सकते हैं, यह गणना, आदि
आप object
के रूप में यह घोषणा की, तो आप इसे के साथ किसी भी आपरेशन नहीं कर सका जो Dictionary
द्वारा प्रदान किए जाते हैं, केवल सभी वस्तुओं के लिए मान्य हैं।
मुझे उस कोड को कार्रवाई में देखना अच्छा लगेगा। –
आपका कंप्यूटर विंडोज चल रहा है? j/k। मैंने उस विशेष प्रकार को बनाया लेकिन मैं उन प्रकारों का उपयोग करने के लिए बहुत मेहनत कर रहा था जो वास्तव में एक साथ संयुक्त हो सकते हैं। –
@ जो, मैं नहीं ... – jonnystoten
var foo = "Hello, I am a string!";
// foo is a string, so this compiles
var fooCharArray = foo.ToCharArray();
object bar = foo;
// bar is not a string, so this does not compile
var barCharArray = bar.ToCharArray();
पहले उदाहरण में, संकलक जानता है कि foo
एक स्ट्रिंग है और इसलिए हम foo
पर स्ट्रिंग तरीकों कॉल कर सकते हैं।
दूसरे उदाहरण में, हम किसी ऑब्जेक्ट में foo
स्ट्रिंग को "अपस्टास्ट" करते हैं। अब संकलक नहीं जानता (क्योंकि यह नहीं पता होना चाहिए!) कि bar
वास्तव में एक स्ट्रिंग है, और हम bar
पर स्ट्रिंग विधियों को कॉल नहीं कर सकते हैं। कंपाइलर किसी ऑब्जेक्ट (या किसी भी बेस प्रकार) से व्युत्पन्न डाउनकास्टिंग को व्युत्पन्न प्रकार (जैसे System.String
) तक अनुमति नहीं देगा। संकलन समय प्रकार सुरक्षा नियमों का इसका हिस्सा है।
var अभी भी दृढ़ता से टाइप किया गया है लेकिन ऑब्जेक्ट के साथ आपको सब कुछ डालना होगा।
http://stackoverflow.com/questions/1552881/difference-between-var-and-object-in-c – Mathias