C# Foreach重复内部值…这应该很简单!
嵌套循环不是您想要的。内部循环将为外部循环的每个元素整体运行 如果两个数组的元素数相同,只需执行一个循环,同时对两个数组执行所有操作C# Foreach重复内部值…这应该很简单!,c#,C#,嵌套循环不是您想要的。内部循环将为外部循环的每个元素整体运行 如果两个数组的元素数相同,只需执行一个循环,同时对两个数组执行所有操作 float [] pt1x = {0.580f, 0.680f, 0.780f}; float [] pt1y = {1.128f, 1.228f, 1.328f}; for (int i=0; i < pt1x.Length; i++) { Console.Writeline("xpt = " + pt1x[i])
float [] pt1x = {0.580f, 0.680f, 0.780f};
float [] pt1y = {1.128f, 1.228f, 1.328f};
for (int i=0; i < pt1x.Length; i++)
{
Console.Writeline("xpt = " + pt1x[i]);
Console.Writeline("ypt = " + pt1y[i]);
}
嵌套循环不是您想要的。内部循环将为外部循环的每个元素整体运行 如果两个数组的元素数相同,只需执行一个循环,同时对两个数组执行所有操作
float [] pt1x = {0.580f, 0.680f, 0.780f};
float [] pt1y = {1.128f, 1.228f, 1.328f};
for (int i=0; i < pt1x.Length; i++)
{
Console.Writeline("xpt = " + pt1x[i]);
Console.Writeline("ypt = " + pt1y[i]);
}
但您应该使用System.Drawing.Point
但是您应该使用System.Drawing.Point这看起来像是值对。字典不是更好吗
for each x
print x
for each y
print y
这看起来像是值对。字典不是更好吗
for each x
print x
for each y
print y
这里有一个稍微稳健的解决方案,它使用了与其他解决方案相同的原理,但适用于任意数量的阵列:
Dictionary<float, float> floats = new Dictionary<float, float>();
floats.Add(0.580f, 1.128f);
floats.Add(0.680f, 1.228f);
floats.Add(0.780f, 1.328f);
floats.Keys.ToList().ForEach(f =>
{
Console.WriteLine(String.Format("key: {0} value: {1}", f, floats[f]));
});
这里有一个稍微稳健的解决方案,它使用了与其他解决方案相同的原理,但适用于任意数量的阵列:
Dictionary<float, float> floats = new Dictionary<float, float>();
floats.Add(0.580f, 1.128f);
floats.Add(0.680f, 1.228f);
floats.Add(0.780f, 1.328f);
floats.Keys.ToList().ForEach(f =>
{
Console.WriteLine(String.Format("key: {0} value: {1}", f, floats[f]));
});
如果迁移到.NET 4.0,则可以使用,否则可以在.NET 3.5中将其作为扩展方法实现。Eric Lippert在他的博客文章中给出了这样一个实现的示例: 下面是它的使用方法:
0.580
1.128
0.680
1.228
0.780
1.328
请注意,您可能希望在lambda表达式的串联部分将xpt更改为xpt.ToString,以便更好地控制返回类型
编辑:切换到Eric Lippert文章的实现链接,因为它会在继续之前检查参数。如果移动到.NET 4.0,则可以使用,否则可以在.NET 3.5中将其实现为扩展方法。Eric Lippert在他的博客文章中给出了这样一个实现的示例: 下面是它的使用方法:
0.580
1.128
0.680
1.228
0.780
1.328
请注意,您可能希望在lambda表达式的串联部分将xpt更改为xpt.ToString,以便更好地控制返回类型
编辑:切换到Eric Lippert帖子的实现链接,因为它会在继续之前检查参数。您在该网站上已经呆了41天,并发布了12个问题。恕我直言,到目前为止,您应该知道如何确保问题中的代码是可读的:更新:ArsenMkrt在这一次为您提供了足够的帮助,但如果您自己继续这样做会更好。您已经在该网站上呆了41天,发布了12个问题。恕我直言,到目前为止,您应该知道如何确保问题中的代码是可读的:更新:ArsenMkrt在这种情况下很乐意为您这样做,但如果您自己继续这样做会更好。考虑到提供的输入,这是一个完全可以接受的解决方案;请参阅我的答案,了解使用相同方法但有额外保护措施的替代方案,例如检查阵列的长度和可变数量的输入。考虑到提供的输入,这是一个完全可以接受的解决方案;请参阅我的答案,了解使用相同方法但有额外保护措施的替代方案,例如,检查数组的长度和可变数量的输入。我更倾向于使用PointF。我更倾向于使用PointF。这正是我所需要的,只需在此处稍加编辑:对于int I=0;i
0.580
1.128
0.680
1.228
0.780
1.328
float[] pt1x = {0.580f, 0.680f, 0.780f};
float[] pt1y = {1.128f, 1.228f, 1.328f};
var result = pt1x.Zip(pt1y, (xpt, ypt) =>
"xpt = " + xpt + Environment.NewLine + "ypt = " + ypt);
foreach (var item in result)
Console.WriteLine(item);