• 泛型的应用与扩容原理


     .泛型集合
      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();



      
      
       

  • 相关阅读:
    C#Mvc批量删除
    axure中使用HighCharts模板制作统计图表
    中继器的使用——搜索/分页/排序
    中继器的使用 —— 关联/增加/删除/修改数据
    axure母版使用实例之百度门户
    jdbc参数传递
    软件测试的原则
    linux中使用top获取进程的资源占用信息
    性能测试关键指标介绍
    怎样成为一个合格的测试工程师
  • 原文地址:https://www.cnblogs.com/wyl123/p/7016823.html
Copyright © 2020-2023  润新知