今天看到一段代码
        public static void Remove(this GridView grid, string cbxName)
        {
            try
            {
                foreach (GridViewRow row in grid.Rows)
                {
                    var cbxSelect = row.FindControl(cbxName) as CheckBox;
                    if (cbxSelect != null && cbxSelect.Checked)
                    {
                        grid.DeleteRow(row.RowIndex);
                    }
                }
            }
            catch
            {
                throw;
            }
        }
里面传入参数是this GridView grid
这样的传入参数是什么意思?
这个函数是在一个类中,里面没有GridView控件
调用的时候写的是grid.Remove("cbxSelected");
前面的this GridView grid在调用的时候好像不用传入
这到底是什么玩意儿?

解决方案 »

  1.   

    C# 3.0开始有的扩展方法...http://msdn.microsoft.com/zh-cn/library/bb383977(VS.90).aspx这里的意思是为GridView类附加一个Remove(string cbxName)方法...
      

  2.   

    这段东西能正常运行
    grid.Remove("cbxSelected");
    这段调用的语句也确实调用到了上面的public static void Remove(this GridView grid, string cbxName)
    调用语句也在同一个类里面
            public static void Remove(this GridView grid)
            {
                grid.Remove("cbxSelected");
            }
      

  3.   

    this GridView grid...明显不合法啊...public static void Remove(GridView grid, string cbxName)
      {
      try
      {
      foreach (GridViewRow row in grid.Rows)
      {
      /*
       这个var是啥....
       var cbxSelect = row.FindControl(cbxName) as CheckBox;
      */
      if (cbxSelect != null && cbxSelect.Checked)
      {
      grid.DeleteRow(row.RowIndex);
      }
      }
      }
      catch
      {
      throw;
      }
      }
      

  4.   

    竟然还有很多人不知道,Linq方法都是扩展方法...