इसXmlNodeList लूप में var infer प्रकार ऑब्जेक्ट और XmlNode क्यों नहीं है?
foreach (XmlNode foo in xmlNodeList) {string baa = foo.Attributes["baa"].Value;}
सब कुछ काम करता है के रूप में उम्मीद की तरह एक XmlNodeList के माध्यम से लूप है - foo प्रकार XmlNode और VS.NET IDE का स्पष्ट रूप से है तरीकों और क्षेत्रों को दर्शाता है।
दूसरी ओर
foreach (var foo in xmlNodeList) { string baa = foo.Attributes["baa"].Value; }
पर संकलन नहीं है, क्योंकि यहां foo के प्रकार वस्तु है। अनुमानों का प्रकार टाइप करें लेकिन ऑब्जेक्ट infers।
जाहिर है, XmlNodeList के तत्वों एक परिभाषित प्रकार के नहीं हैं, लेकिन उन्हें वर के बजाय XmlNode को बताए (कास्टिंग या unboxing) परोक्ष कुछ नहीं करता है।
पहला प्रश्न: इसके पीछे तंत्र क्या है?
दूसरा (संबंधित) प्रश्न: इस प्रकार के लूप में किस प्रकार का उपयोग किया जा सकता है? क्या वीएसनेट आईडीई मदद करता है?
आप system.xml.linq नाम स्थान में कक्षाओं का उपयोग करने के रूप में वे अन्य लोगों के अलावा IEnumerable जेनेरिक संस्करण को लागू करना चाह सकते हैं। इन वर्गों का उपयोग करते समय var को सही ढंग से अनुमानित किया जाना चाहिए। वाईएमएमवी –
@ क्रिस: संकेत के लिए धन्यवाद - मैं जांच करूंगा। – Olaf
+1, मैं बस एक ही प्रश्न पूछने जा रहा था :-) –