Nếu một vòng qua một XmlNodeList như thế nàyTại sao đối tượng loại suy luận var chứ không phải XmlNode trong vòng lặp XmlNodeList?
foreach (XmlNode foo in xmlNodeList) {string baa = foo.Attributes["baa"].Value;}
mọi thứ hoạt động như mong đợi - foo rõ ràng là kiểu XmlNode và IDE VS.NET cho thấy phương pháp và các lĩnh vực.
Mặt khác
foreach (var foo in xmlNodeList) { string baa = foo.Attributes["baa"].Value; }
không được biên dịch vì đây foo là loại đối tượng. Nhập loại công việc suy luận nhưng nhập đối tượng.
Rõ ràng, các yếu tố của XmlNodeList không của một loại được xác định, nhưng gán chúng cho XmlNode thay vì var làm điều gì đó ngầm (đúc hoặc unboxing).
Câu hỏi đầu tiên: cơ chế đằng sau điều gì?
Câu hỏi thứ hai (có liên quan): cách tìm loại mà người ta có thể sử dụng trong loại vòng lặp này? VS.NET IDE có giúp ích gì không?
Bạn có thể muốn sử dụng các lớp trong không gian tên system.xml.linq khi chúng thực hiện các phiên bản chung IEnumerable trong số các phiên bản khác. Các var nên được suy ra một cách chính xác khi sử dụng các lớp này. YMMV –
@Chris: Cảm ơn bạn đã gợi ý - Tôi sẽ kiểm tra. – Olaf
+1, tôi sẽ hỏi cùng một câu hỏi :-) –