步步为赢 泛型简介


                               C#高级编程    第二章  泛型  /**/

//字符串是引用类型   引用类型 : object    string

//装箱  拆箱
{
    装箱
    →→→
 值类型    引用类型
    ←←←
    拆箱

 引用类型放在堆中
 值类型放在栈中

 

 装箱:          栈            堆
      ............................         1、先在堆中分配一个空间        
      .            .    ......    .         2、栈将堆中的内容复制
      .            .    .空间.  .         3、将栈的内容指向堆
      .            .    ......    .
      .      O →→→10     .
      ............................
                 int a = 10
                 object O = a

 

 拆箱: int b = (int) O       1、先检查堆上空间是否存在值类型
         2、将值类型复制至栈中
}


//泛型:将类型参数化得数据类型
  ↑
  将数组和集合的优点结合{
    数组的优点是类型强,声明时即指定类型
    集合的优点是长度不固定
                        }

 //补充 : override 是重写object 类的方法 {
       public override string Tostring()
       {
        return "车手名"+ a + .......
       }
       }

 

//类型为object类型的弊端
{
 1、object 类在编译期间是没有类型安全性的(可以通过编译器最后却出错)
 2、值类型使用object类会有性能损失(拆装箱) /*是赋值的20倍性能损耗、是强制转换的4倍性能损耗!*/
}

 

//泛型的命名空间: System.Collections.Gemeric    /*Gemeric: 类的*/


//泛型类:
{
 Class 名 <T>  /*命名规则: 只有一个泛型时 :只用T;有多个泛型时:用T加形容词 如:TKey、TValue */
 {
  private T a;

  Public 名 (T b)
  {
   a = b;
  }

 属性→  Public T A
  {
   get{return a};
   set{a = value};
  }
 }


 /Main 下/

   实例化→     名 <string> temp1 = new 名<string>();

}

 


   泛型数组→   List <类名> myracer = new List<类名>();
    ↑ ↑
    ↑ 或 string 或 int.....
                 可以替代ArrayList   赋值:myracer.Add(123....);  取值:myracer[0]
   
   

//泛型方法:
{
 public void sway<T>(ref T a, ref T b)
 {
  T c;
  c = a;
  a = b;
  b = c;
 }

 /*使用*/
 实例化 →   Class3  cls3 = new Class3();
                      ↑
                     不是泛型类但包含泛型方法

            s1、s2已赋值→   cls3.swap(ref s1,ref s2);
              ↑
             类型随便
}

 

//泛型优点:
{
 1、提高性能避免拆箱装箱
 2、安全:如果有赋值错误在编译阶段就能发现
 3、提高代码的重用性
}

 

//补充: 关于 DataGridView

 dataGridView1.DataSource = myList                        //source : 来源
     ↑       ↑                          //grid  : 格子
  数据绑定    泛型数组                      //view   : 视野

     列名可将属性名改成相应的汉语或用dataGridView1.Colums.HeaderText="...";

 

转载于:https://www.cnblogs.com/qinweilong/archive/2010/03/04/1678185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值