我很难过。我有一个看起来像这样的构造函数类:
class CClasses
{
public class CCategoryGroup : List<CCategory>
{
public string CTitle { set; get; }
public string CShortTitle { set; get; }
public CARESCategoryGroup(string ctitle, string cshorttitle)
{
this.CTitle = ctitle;
this.CShortTitle = cshorttitle;
}
};
public class CCategory
{
public int CID { set; get; }
public string CName { set; get; }
public ImageSource CIcon { set; get; }
public string CUrl { set; get; }
public CCategory(int cid, string cname, ImageSource cicon, string curl)
{
this.CID = cid;
this.CName = cname;
this.CIcon = cicon;
this.CUrl = curl;
}
};
}
我想像这样添加到类的构造函数部分:
//List<CCategoryGroup> ccategory = new List<CCategoryGroup>
//{
// new CCategoryGroup("Dolphin", "Dolphin Group")
// {
// new CCategory(1, "Bear", ImageSource.FromFile("bear.png")),
// new CCategory(2, "Elephant", ImageSource.FromFile("elephant.png")),
// new CCategory(3, "Dog", ImageSource.FromFile("dog.png")),
// new CCategory(4, "Cat", ImageSource.FromFile("cat.png")),
// new CCategory(5, "Squirrel", ImageSource.FromFile("squirrel.png"))
// },
我的问题是我试图通过循环添加到这个类。因此,我可以轻松地添加CCategoryGroup:
cCategory.Add(new CCategoryGroup(name, value)
如何添加到CCategory构造函数中,如前所示?
foreach (XElement catelement in xmlDoc.Descendants(xmlNS + "Category"))
{
cCategory.Add(new CCategoryGroup(catelement.Element(xmlNS + "Name").Value, catelement.Element(xmlNS + "Name").Value){
foreach (XElement subcatelement in xmlDoc.Descendants(xmlNS + "SubCategory"))
{
i++;
new CCategory(i, subcatelement.Element(xmlNS + "Name").Value, "", subcatelement.Element(xmlNS + "URL").Value);
}
});
}
我正在解析XML并尝试将结果添加到类中。显然,这不起作用。但这是我尝试做的一个例子。第一个&#34; .add&#34;到cCategoryGroup工作得很好,它的构造函数CCategory我也不能像我在注释掉的代码中那样添加。
答案 0 :(得分:0)
不,你不能在集合初始化程序中使用这样的循环,但你可以在没有初始化程序的情况下使用它:
foreach (XElement catelement in xmlDoc.Descendants(xmlNS + "Category"))
{
CCategoryGroup categoryGroup = new CCategoryGroup(catelement.Element(xmlNS + "Name").Value, catelement.Element(xmlNS + "Name").Value;
cCategory.Add(categoryGroup);
foreach (XElement subcatelement in xmlDoc.Descendants(xmlNS + "SubCategory"))
{
i++;
categoryGroup.Add(new CCCategory(i, subcatelement.Element(xmlNS + "Name").Value, "", subcatelement.Element(xmlNS + "URL").Value));
}
}
请注意,初始化程序只会被编译器转换为一系列Add
调用,因此在功能上它们之间没有区别,并且在循环中添加。