为什么这个循环再做一次迭代?

Fir*_*gon 1 c# entity-framework

存在一个存储在数据库中的角色列表,模型中只有一个角色.实体框架用于填充模型,但我认为这不重要.

代码打击似乎用于迭代这些:

foreach (var role in (new Role[1]).Concat(model.Roles))
{
}
Run Code Online (Sandbox Code Playgroud)

但说实话,我无法理解这段代码正在做什么.我所知道的是它循环两次而不是一次.任何人都可以澄清它在做什么吗?

Mar*_*age 6

该语句new Role[1]创建一个包含单个元素的数组.该元素是null除非Role是我认为不是的值类型.否则,这是你通过电话得到的new Role().

然后,您将null角色与任何角色连接起来model.Roles.最终结果是您在前面null添加了角色集合model.Roles.然后迭代这个新集合.

如果model.Roles包含元素

{ role1, role2, role3 }
Run Code Online (Sandbox Code Playgroud)

你的foreach循环将迭代

{ null, role1, role2, role3 }
Run Code Online (Sandbox Code Playgroud)