我正在尝试创建一个包含嵌套类的类的列表。我能以某种方式在函数中使用yield来缩短它并使其更可重复吗?
var links = new List<UserLink>();
links.Add(new UserLink
{
Name = "A",
Url = "B.com",
Something = "C",
Parameters =
{
new Parameter { Name = "X", Value = "Y" },
new Parameter { Name = "Z", ParameterValue = "0" }
}
});
答案 0 :(得分:3)
我唯一能想到的是使用构造函数,然后它会更短,但可读性更低:
links.Add(new UserLink("A", "B.com", "C", new Parameter("X", "Y" ), new Parameter("Z", "0")));
最后一部分(传递可变数量的Parameter对象)可以通过params
关键字实现:
public UserLink(string name, string url, string something = "C", params Parameter[] parameters)
{
//....
}
答案 1 :(得分:3)
只有在这种情况下才能使用yield
的方法是:
public IEnumerable<UserLink> GetLinks()
{
yield return new UserLink() { Name = "A", ... };
yield return new UserLink() { Name = "B", ... };
...
}
答案 2 :(得分:3)
yield 将用于返回IEnumerables,如下所示:
public IEnumerable<UserLink> UserLinks()
{
for (int i = 0; i < 10; i++)
{
yield return new UserLink
{
Name = "A",
Url = "B.com",
Something = "C",
Parameters =
{
new Parameter { Name = "X", Value = "Y" },
new Parameter { Name = "Z", ParameterValue = i.ToString() }
}
};
}
}
然后你可以像LINQ一样使用它:
UserLinks().Where(userlink => userlink.Name == "A")