当我通过HttpClient对象从web api获取数据时,我有异步方法。 我打印出响应字符串,我可以看到我有正确的数据。
我还将响应转换为我的自定义类的数组,它的工作正常(我可以将属性记录到控制台)。
当我通过索引打印属性时,一切正常:
Debug.WriteLine("B: " + brands[0].Brand);
但是当我枚举数组时它没有记录数据,看起来它包含空字符串,为什么?:
foreach (Brand brand in brands)
{
Debug.WriteLine("BRAND: ", brand.Brand.ToString()); // Prints just BRAND:
}
这就是我的方法的样子:
public static async Task<Brand[]> LoadBrandsAsync()
{
Brand[] brands = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(serviceUrl);
HttpResponseMessage response = await client.GetAsync("Brands");
try
{
brands = await response.Content.ReadAsAsync<Brand[]>();
Debug.WriteLine("Count: " + brands.Count());
Debug.WriteLine("B: " + brands[0].Brand); // This works fine
Debug.WriteLine("B: " + brands[0].Sales); // it print out the data
foreach (Brand brand in brands)
{
// This does't work, WHY?
Debug.WriteLine("BRAND: ", brand.Brand.ToString() + ", " + brand. Sales.ToString());
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
return brands;
}
有人可以回答为什么在枚举时数组中的对象看起来像空吗?
答案 0 :(得分:6)
所有Debug.WriteLine
的第一个参数是格式字符串,其元素位置为hoders:"BRAND: {0}, {1}..."
,在您的情况下没有{0}
,因此忽略其他参数。
查看Debug.WriteLine帮助。您也不需要.Tostring()
次调用 - 如果参数不是字符串而不是null,则自动执行:
Debug.WriteLine("BRAND: {0}, {1}", brand.Brand, brand.Sales);