我以为我很聪明,但我错了.因此,对于单元测试,我需要列表中的每个项目中的X数量列表和一些值.所以我想出了这个作为达到目标的简洁方法.
List<PlanList> planList = new List<PlanList>(new PlanList[7]);
planList.ForEach(c => c.Description = "I'm a Description");
planList.ForEach(c => c.OrderPosition = 1);
Run Code Online (Sandbox Code Playgroud)
然而事实证明,我得到了7个空对象的列表.
所以我很想知道发生了什么,但更重要的是,我只是想快速生成一个包含7个对象的List,它可以为我的测试提供相同的值.
看来你正在寻找这样的东西:
List<PlanList> planList = Enumerable
.Range(0, 7)
.Select(index => new PlanList() {
Description = "I'm a Description",
OrderPosition = 1
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
即创建 7 PlanList实例,并兑现他们的名单.
您没有在数组的每个索引处创建对象.我什么也看不见new PlanList().因此,您创建了一个长度为7的数组,PlanList其中包含参考类型的默认值NULL
你的代码应该扔进NullReferenceExpcetion去ForEach!
我会这样做:
List<PlanList> planList = (from index in Enumerable.Range(0, 7)
select new PlanList()
{
Description = "I'm a Description",
OrderPosition = index
}).ToList();
Run Code Online (Sandbox Code Playgroud)
我猜这PlanList是在struct这里,对吗?(没有new,价值观丢失).
使用a struct,当您从列表中获取项目时,您有一个副本.如果你改变副本:原件不知道或不在乎.
基本上,你的大多数问题应该通过制作PlanList一个class.struct在大多数常规C#代码中创建s 非常常见.
请注意,您需要创建实例.如果是我,我只想用(这里PlanList是class):
var list = new List<PlanList>();
for(int i = 0 ; i < 7 ; i++)
list.Add(new PlanList { Description = "foo", OrderPosition = 1});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |