当前位置:编程学习 > C#/ASP.NET >>

请高手解释这段简单的代码???谢谢

 public int ifkong()
    {
        int i = 0;
        foreach (DataGridItem row in mag_pb.Items)
        {

            string strid = this.mag_pb.DataKeys[row.ItemIndex].ToString();
            TextBox df = (TextBox)row.FindControl("Tb_df");
            Label pf = (Label)row.FindControl("Lb_pf");
            float f = -1;
            if (df.Text.ToString() != "")
            {

                f = float.Parse(df.Text.ToString());
            }

            float z = float.Parse(pf.Text.ToString());

            if (f < 0 || f > z)
            {
                i++;
            }
        }
        return i;
    }
请高手给我解释一下这段代码!!
这段代码之后还有个
if (ifkong==0)是什么意思???
谢谢谢谢!!! --------------------编程问答--------------------

   // 方法头,没太多好说的.
   // 返回了一个整数,这个整数是什么意思呢?
    // 往下分析
   public int ifkong() 
    { 
        int i = 0; 
        // 循环取出 DataGridItem 中的每一行
        foreach (DataGridItem row in mag_pb.Items) 
        { 
            // 这个 DataKeys 属性不熟,查一下MSDN
            // 哦,原来是 Web 控件的.后面还有下标,就是一个集合了
              // "表示数据绑定控件中某个记录的一个或多个主键字段。"
            // 所以,这里是取出了一个主键的值吧
            string strid = this.mag_pb.DataKeys[row.ItemIndex].ToString(); 
            // 首先,row 是循环中,用来表示一个行对象的引用
              // 所以,这里表示的是当前所在的行
              // FindControl 方法嘛,看名字就知道,是找一个指定名称的控件,然后强制转换了一下
            TextBox df = (TextBox)row.FindControl("Tb_df"); 
            // 这个和上面一样
            Label pf = (Label)row.FindControl("Lb_pf"); 
            // 这里为什么是 -1 而没定义为 0 呢?往下看看!
            float f = -1; 
            // 这里是判断前面找到的那个文本框是否为空嘛.
            // 呵呵,不过,我觉得这种方式不如用 string.IsNullOrEmpty(df.Text.Trim()) 更好些
            if (df.Text.ToString() != "") 
            { 
                // 如果不为空,就让 f = 文本框里的值嘛.为空呢?为空就还是-1呗
                // 这里好象没有异常判断,因为可能输入的不一定是数字吧
                f = float.Parse(df.Text.ToString()); 
            } 
            // 这一步,是把前面找到的 Lable 控件的文本转换了一下下
            float z = float.Parse(pf.Text.ToString()); 
            
            // 那么,如果 f < 0 , 或者 f > Lable控件的文本转换的数字值,就把 i + 1
            // 这里需要留心,如果文本框里没有值,这里会是 -1 ,所以也会加 1 的
            if (f  < 0  ¦ ¦ f >  z) 
            { 
                i++; 
            } 
        } 
        // 把所有行都判断完了,该返回了.
        return i; 
    } 


分析完了,看看你的问题怎么给你回答呢?
首先,我还是不大清楚这个函数是做什么的,因为我不知道 Label 的值是怎么定的呀.这还是得看具体的应用吧.
不过,明显,返回的是 i 的值,所以,只要知道这个 i 是计算的什么情况就好了.如果把 0 到 标签中的值看做一个范围的话,那么当然是找出不在这个范围的值有多少个了.

知道了返回值是什么, if(ifkong()==0)(你上面写的好象是少了括号吧), 的意思也比较容易明白了,就是看看是不是有不在这个范围的数字嘛.如果等于0就是没有呗.

呵呵,不知道这样说下来,你满意不.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,