您的位置:首页 > 编程语言 > C#

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

2013-06-08 22:14 405 查看
    首先,需要转化的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: