我想知道是否可以以某种方式实现以下伪代码。我有4个不同大小的索引列表,所以不能使用相同的参考计数器。我需要同时运行这四个,以便我可以在一行中将数据添加到datagridview。
for (int m = 0, n = 0, p = 0, q = 0; m <= coords_Count, n <= outer_plf_Count, p <= planet_start_plf_Countt, q <= planet_plf_Count, m++, n++, p++, q++)
{
dataGridView1.Rows.Add(
block_coords_list[m][(int)Coords.X], //Column 1
block_coords_list[m][(int)Coords.Y], //Column 2
block_coords_list[m][(int)Coords.Z], //Column 3
outer_plf_list[n][(int)Outer_plf.Hash], //Column 4
outer_plf_list[n][(int)Outer_plf.X], //Column 5
outer_plf_list[n][(int)Outer_plf.Y], //Column 6
outer_plf_list[n][(int)Outer_plf.Z], //Column 7
outer_plf_list[n][(int)Outer_plf.OrbitName], //Column 8
outer_plf_list[n][(int)Outer_plf.PrefabName], //Column 9
planet_start_plf_list[p][(int)Planet_Start_plf.X], //Column 10
planet_start_plf_list[p][(int)Planet_Start_plf.Y], //Column 11
planet_start_plf_list[p][(int)Planet_Start_plf.Z], //Column 12
planet_start_plf_list[p][(int)Planet_Start_plf.PlanetName], //Column 13
planet_start_plf_list[p][(int)Planet_Start_plf.PlanetBiome], //Column 14
planet_start_plf_list[p][(int)Planet_Start_plf.StartTrue], //Column 15
planet_plf_list[q][(int)Planet_plf.X], //Column 16
planet_plf_list[q][(int)Planet_plf.Y], //Column 17
planet_plf_list[q][(int)Planet_plf.Z], //Column 18
planet_plf_list[q][(int)Planet_plf.PlanetaryBodyName], //Column 19
planet_plf_list[q][(int)Planet_plf.PrefabName]); //Column 20
}
答案 0 :(得分:3)
如果源数组的长度不同,您可以考虑如果范围到达单个源数组的末尾时您希望范围如何工作。
最好的方法是让一个condition
用于最长的数组,并在每列中使用三元运算符?:
,以避免在该列的数据范围之外访问任何内容:
int a0Max = block_coords_list.Length;
int a1Max = outer_plf_list.Length;
int a2Max = planet_start_plf_list.Length;
int a3Max = planet_plf_list.Length;
int max = new Int32[] { a0Max, a1Max, a2Max, a3Max }.Max();
for (int i = 0; i < max, i++)
{
dataGridView1.Rows.Add(
i < a0Max ? block_coords_list[i][(int)coords.X] : null,
i < a0Max ? block_coords_list[i][(int)coords.Y] : null,
i < a0Max ? block_coords_list[i][(int)coords.Z] : null,
i < a1Max ? outer_plf_list[i][(int)outer_plf.Hash] : null,
i < a1Max ? outer_plf_list[i][(int)outer_plf.X] : null,
i < a1Max ? outer_plf_list[i][(int)outer_plf.Y] : null,
i < a1Max ? outer_plf_list[i][(int)outer_plf.Z] : null,
i < a1Max ? outer_plf_list[i][(int)outer_plf.OrbitName] : null,
i < a1Max ? outer_plf_list[i[(int)outer_plf.PrefabName] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.X] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.Y] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.Z] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.PlanetName] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.PlanetBiome] : null,
i < a2Max ? planet_start_plf_list[i][(int)planet_Start_plf.StartTrue] : null,
i < a3Max ? planet_plf_list[i][(int)planet_plf.X] : null,
i < a3Max ? planet_plf_list[i][(int)planet_plf.Y] : null,
i < a3Max ? planet_plf_list[i][(int)planet_plf.Z] : null,
i < a3Max ? planet_plf_list[i][(int)planet_plf.PlanetaryBodyName] : null,
i < a3Max ? planet_plf_list[i][(int)planet_plf.PrefabName]
);
}