C# 将2个foreach循环转为2个for循环

这篇博客介绍了如何将2个C#中的foreach循环转换为for循环,以提高代码效率。主要内容包括如何处理需要依赖前一个循环变量的嵌套循环,并提供了具体的代码示例来解释转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    首先,需要转化的foreach循环如下

foreach (WSSyd syd in wssydj.Syds)
            {

                int yaopinindex = 0;
                foreach (WSYzxx yzxx in syd.Yzxxs)
                {
                    if (yzxx.Z_id == 0) continue;
                    num++;
                    y += rowGap;
                    x = leftMargin;
                    int lenthindex = 0;
                    e.Graphics.DrawString(num + "", font, brush, new RectangleF(x, y, lenth[0], 15));
                    x = x + lenth[lenthindex++];
                    e.Graphics.DrawString(yzxx.Ypmc + "", font, brush, new RectangleF(x, y, lenth[1], 15));
                    x = x + lenth[lenthindex++];


 

       上面只列了循环的一部分,需要遍历的内容是wssydj.Syds和syd.Yzxxs,转化为for循环适用为不需要遍历整个数组可鞥只需要 wssydj.Syds.Length - 1 个数组而已,所以,就需要将foreach循环转变为for循环更加合适。

       对于第一个循环,比较简单,我们只要直接写出来就可以了,如下

for (int i = 0; i < wssydj.Syds.Length ; i++)//遍历syd中的数
            {


       对于第二个循环,小弟才疏学浅,刚入门不久,学C#也没多久,对于这第二个循环楞是绞尽脑汁花了一个小时,还是在同事的帮助之下写好的,因为第二个循环需要用到第一个循环中的syd标识符,我们可以理解为for循环中的 i 变量 ,yzxx可以理解为for的第二循环的 j 变量,嗯...C/C++的毛病了。所以,第二个循环我们可以写成

for (int j = 0; j < wssydj.Syds[i].Yzxxs.Length; j++)
                {


       就是当执行完第一个for之后,在第二个for里面Syds数组为第 i 个的时候遍历wssydj.Syds[ i ].Yzxxs 这样子说,不知道能不能理解。

       在循环内,若要表达数组中的某一个值的时候可以这样写

wssydj.Syds[i].Yzxxs[j].Ypmc.ToString()

 

 if (wssydj.Syds[i].Yzxxs[j].Z_id == 0) continue;


       全部表述如下:

for (int i = 0; i < wssydj.Syds.Length ; i++)//遍历syd中的数-1
            {
                //int yaopinindex = 0;
                for (int j = 0; j < wssydj.Syds[i].Yzxxs.Length; j++)
                {
                    if (wssydj.Syds[i].Yzxxs[j].Z_id == 0) continue;


 

 

                                                                       FUYUAN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值