foreach语句不能对类型变量进行操作,因为它不包含'GetEnumerator'的公共定义

时间:2016-05-20 06:16:09

标签: c#

string_builder.Replace("5 star", "FiveStar");
hotel_pricesURL = string_builder.ToString();
RootobjectOne robjectOne = JsonConvert.DeserializeObject<RootobjectOne>(hotel_pricesURL);
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
List<OneStar> one_star_list  = new List<OneStar>();
var  dmx = robjectOne.onestar;
var val = robjectOne.onestar;
var routes_list = json_serializer.DeserializeObject(hotel_pricesURL);

foreach (var forOne in val)
{

}

2 个答案:

答案 0 :(得分:4)

我认为错误信息非常自我解释。问题是您的OneStar不拥有GetEnumerator方法。这会导致错误,因为foreach并不知道如何迭代它。

有趣的是,它不必是IEnumerable对象,只需公开一个方法:

IEnumerator GetEnumerator()

因为foreach使用枚举器来枚举集合元素。因此,如果您在OneStar类中实现这样的方法,它将正常工作。

答案 1 :(得分:1)

你试图在val上做一个forloop。 ValrobjectOne.onestar。因此,如果onestar没有实现IEnumerable,那么你的运气不好。

还有什么用?

var dmx = robjectOne.onestar;
var val = robjectOne.onestar;