请高手解释这段简单的代码???谢谢
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#