c# - foreach 在匿名类型上

标签 c# foreach anonymous

using System;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace LearningJustCode
{
    class Program
    {
        static void Main(string[] args)
        {
            Update();
        }

        static void Update()
        {
            var quote1 = new { Stock = "DELL", Quote = GetQuote("DELL") };
            var quote2 = new { Stock = "MSFT", Quote = GetQuote("MSFT") };
            var quote3 = new { Stock = "GOOG", Quote = GetQuote("GOOG") };

            var quotes = new object[] { quote1, quote2, quote3 };

            foreach (var item in quotes)
            {
                Console.WriteLine(item.Stock);
                Console.WriteLine(item.Quote.ToString());
            }
        Console.ReadKey();

        }

        static string GetQuote(string stock)
        {
            try
            {
                return InnerGetQuote(stock);
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
                return "N/A";
            }
        }

        static string InnerGetQuote(string stock)
        {
            string url = @"http://www.webservicex.net/stockquote.asmx/GetQuote?symbol={0}";
            var request = HttpWebRequest.Create(string.Format(url, stock));

            using (var response = request.GetResponse())
            {
                using (var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
                {
                    return reader.ReadToEnd();
                }
            }


        }
    }
}

我在 item 上画了一条波浪线;变量“item”仅分配给。此代码已从 Paul Kimmel 的书 C# Unleashed by Sams 稍作修改。

最佳答案

您的数组必须是股票报价的类型。 您的股票报价是匿名类型,因此我们也需要匿名定义数组。这可以干净地完成:

    var quotes = new[]{  new { Stock = "DELL", Quote = "123" },
                         new { Stock = "MSFT", Quote = "123" },
                         new { Stock = "GOOG", Quote = "123" }};

    foreach (var item in quotes)
    {
        Console.WriteLine(item.Stock);
        Console.WriteLine(item.Quote.ToString());
    }

关于c# - foreach 在匿名类型上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693238/

相关文章:

c# - 改进 If else 语句编码

c# - 将具体类转换为具有通用类型接口(interface)的通用接口(interface)会导致无效转换异常

c# - LINQ to XML - 如何正确使用 XDocument

arrays - 如何将数组中对象的属性分配给多个类属性?

java - 如果将结果数组分配给变量,它是否是匿名数组

c# - 使用日期时间和日期选择器

Java Velocity foreach 循环

javascript - javascript 迭代对象元素

javascript - 在 Javascript 中保护全局范围的方法

javascript - 匿名函数在 Javascript 中不起作用? (或者也许我只是没有得到匿名函数)