泛型的应用与扩容原理

 .泛型集合
  List<T>
  Dictionary<K,V>  遍历的时候,只能使用foreach
  Dictionary<string,Student> dic=new Dictionary<string,Student>();
  dic.add("张三",stu1);
  dic.add("李四",stu2);

  //1种 
  foreach(string item in dic.Keys)
  {
      Student stu=dic[item];
  }
  //3种
  foreach(Student item in dic.Values)
  {
      //一个item就是一个学生对象
  }
  foreach(KeyValuePair<string,Student> item in dic)
  {
      //item=key+Value
  item.Key
  item.Value
  }
  //数据绑定 List<UserInfo> list  
  dgvList.DataSource=new BindingList<UserInfo>(list);
  --------------------------------------------------------------
  Dictionary<string,Student> dic=new Dictionary<string,Student>();
  BindingSource bs=new BindingSource();
  bs.DataSource=dic.Values;
  dgvList.DataSource=bs;

2.泛型扩容原理
  1.时机:Add(Object obj)
  2.ArrayList:
     一个数组:_items
 一个元素个数变量: _size
 if(_size==this._items.Length)
 {
    EnsourCapacity(_size+1);
 }

 EnsourCapacity(int min)
 {
    int num=this.items.Length==0?4:this.items.Length*2;
this.Capacity=num;
 }
 结论:集合底层是通过两个数组相互copy实现的。
         扩容的本质就是将新数组长度扩容成旧数组长度的2倍,其实上就是调度Array.Copy(oldArray,0,destArray,0,length)。


3.方法重载和构造
  方法名和类名相同,作用用来初始化成员变量。
  没有返回值类型,void都不能有。

  方法重载:
  方法名称相同
  参数列表不同
  和返回值无关


4.方法重载
  可变参数
  C#
   public void say(params object[] objs)
{
    //BaseDao Object... objs
}
public static int ExecuteNonQuery(string cmdTxt, params SqlParameter[] parames)
      {
          return ExecuteNonQuery(cmdTxt, CommandType.Text, parames);
      }
  Java
   /**
    * 执行查询操作  目的:返回一个读取器
    * @param sql  sql语句
    * @param objs  参数列表
    * @return     读取器对象
    * @throws Exception
    */
   public ResultSet  executeQuery(String sql,Object... objs) throws Exception{
   con=getConnection();
   ps = con.prepareStatement(sql);
   for (int i = 0; i < objs.length; i++) {
   ps.setObject(i+1, objs[i]);
   }
   rs= ps.executeQuery();
   return rs;
   }
Console.WriteLine();



  
  
   

原文地址:https://www.cnblogs.com/wyl123/p/7016823.html