为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 foreach 在 IEnumerable 中创建新对象?

是否可以使用 foreach 在 IEnumerable 中创建新对象?

C#
慕田峪9158850 2021-08-22 15:22:11
使用 XUnit,我想将字符串列表传递给测试(使用ClassData或MemberData)。有没有办法做这样的事情,但有一个列表:之前:public static IEnumerable<object[]> GetPersonFromDataGenerator(){    yield return new object[]    {        new Person {"Tribbiani"},        new Person {"Gotti"},        new Person {"Sopranos"},        new Person {"Corleone"}    };}之后:public static IEnumerable<object[]> GetPersonFromDataGenerator(){    var listOfPersons = GetList();    yield return new object[]    {        foreach(var p in listOfPersons)        {             new Person {p}        }     };}它需要符合IEnumerable<object[]>XUnitClassData和MemberData装置的要求。
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

为什么不只是


public static IEnumerable<Person> GetPersonFromDataGenerator()

{

    foreach (var p in GetList())

        yield return p;

}

请记住,枚举器可以在一个方法中多次“产生回报”!


或者,如果您确实想返回多个对象数组,您的代码可能如下所示:


public static IEnumerable<object[]> GetPersonFromDataGenerator()

{

    var listOfPersons = GetList();

    yield return listOfPersons.ToArray();

}

ToArray() 会将列表转换为数组。


查看完整回答
反对 回复 2021-08-22
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信