zoukankan      html  css  js  c++  java
  • 面向对象——is和as运算符、泛型集合 List<T>

    二:is和as运算符:

    (1)  is运算符

    is 运算符用于检查对象是否与给定类型兼容。如果兼容返回true,否则返回false;

    一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类;

    例如,要检查变量是否与object类型兼容: 注意:“兼容”表示对象是该类型,或者派生于该类型。

    object o = new object();  
     
    if (o is Label)  
     {  
         Label lb = (Label)o;  
     
         Response.Write("类型转换成功");  
     }  
     else 
     {  
         Response.Write("类型转换失败");  
     } 

    int和从object继承而来的其他C#数据类型一样,表达式i is object将得到true,并显示信息。

    (2)  as运算符

    as 运算符用于在兼容的引用类型之间执行转换。类似于强制转换操作,但是如果无法执行转换,as不会引发异常,而是返回null

    object o = new object();  
     
     Label lb = o as Label;  
     
     if (lb == null)  
     {  
         Response.Write("类型转换失败");  
     }  
     else 
     {  
         Response.Write("类型转换成功");  
     } 

    对比is和as操作符转换的两种方式,is需要做两次对象的类型检查,而as需要做一次对象类型检查,再加一次null的检查,而null检查开销比对象类型检查少。相对as的方法效率高些。

    二:泛型集合 List<T>

    命名空间:   System.Collections.Generic
     
        List<T>类是 ArrayList 类的泛型等效类。
        该类使用大小可 按需动态增加 的数组实现 IList<T> 泛型接口。
     
        Enumerable 枚举
        Collection 集合
     

    泛型的好处:

        综合了集合与数组的优点,
        固定数据类型,不限制长度的一种集合

        它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。
        不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,性能得到提高。
     
    注意事项: 
        在决定使用IList<T> 还是使用ArrayList类(两者具有类似的功能)时,
        记住IList<T> 类在大多数情况下执行得更好并且是类型安全的。
     
        如果对IList<T> 类的类型 T 使用引用类型,则两个类的行为是完全相同的。
        但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。
    List的基础、常用方法
     
    声明:
            List<T> NAME = new List<T>();
            List<T> NAME =new List<T> (IEnumerable<T> collection);         ----以一个集合作为参数创建List
     
    添加元素:
            List. Add(T item);        ----添加一个元素
            List. AddRange(IEnumerable<T> collection);         ----添加一组元素
            Insert(int index, T item);            ----在index位置添加一个元素 
     
    遍历List中元素:
             foreach (T element in mList);          ----T的类型与mList声明时一样
     
    删除元素:
            List. Remove(T item);                ----删除一个值
            List. RemoveAt(int index);        ----删除下标为index的元素 
            List. RemoveRange(int index, int count);        ----从下标index开始,删除count个元素
     
         注:删除某元素后,其后面的元素下标自动跟进
     
    判断某个元素是否在该List中: 
         List. Contains(T item);           ----返回true或false,很实用
     
    List清空:
            List.Clear ();
     
    获得List中元素数目: 
             List.Count ();         ----返回int值
     
    var 万能变量
  • 相关阅读:
    Python Django :HTTP生命周期
    Docker简介及Centos 7 安装[初步配置]
    python:Django 简介。
    python :Django url /views /Template 文件介绍
    python:异常处理及程序调试
    python之正则表达式【re】
    Day 21 python :面向对象 类的相关内置函数 /单例模式 /描述符
    Day 22: 软件开发目录设计规范
    Day 20: 面向对象【多态,封装,反射】字符串模块导入/内置attr /包装 /授权
    SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6106666.html
Copyright © 2011-2022 走看看