二: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 万能变量

面向对象——is和as运算符、泛型集合 List<T>的更多相关文章

  1. 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合

    1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...

  2. 面向对象--类库、委托、is和as运算符、泛型集合

    类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相 ...

  3. C#—类库、委托、is和as运算符、泛型集合

    类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问 ...

  4. 类库、委托、is as运算符、泛型集合

    类库: 说白了,就是让别人调用你写的方法,并且不让别人看到你是怎么实现的. 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. 1.C#源代码 ...

  5. 多态、类库、委托、is和as运算符、泛型集合

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了v ...

  6. 类库,委托,is和as运算符,泛型集合

    类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debu ...

  7. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...

  8. 使用泛型集合取代datatable作为返回值实现面向对象

    开会的时候,师父说.我们在机房重构时,尽量不要用datatable作为返回值.改用泛型集合的方式,这样能够实现真正的面向对象. 通过查资料和同学交流,把这个问题给攻克了. 对于泛型集合.我也有了一些认 ...

  9. C#面向对象14 List泛型集合/装箱和拆箱/字典集合(Dictionary)

    1.List泛型集合 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

随机推荐

  1. javascript之DOM

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  2. 在线代码编辑器CodeMirror简介

    1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一 ...

  3. Python统计学技术环境

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#sympy 1.1. Python 1.1.1. NumPy pip install numpy-1.11.0+m ...

  4. SharePoint 2013 在母版页中插入WebPart

    最近QQ群里有朋友问,如何在母版页里插入自己开发的WebPart.其实很简单,母版页中虽然不允许插入WebPartZone,但是Designer就可以插入WebPart:或者手动注册,然后插入WebP ...

  5. Atitit.git的存储结构and 追踪

    Atitit.git的存储结构and 追踪 1. Add index.js 2 index1 1.1. new1 1.2. Modify1 2. Commit1 1. Add index.js 2 i ...

  6. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  7. IOS开发中常用一下方法

    1.获得屏幕的宽高 [UIScreen mainScreen].bounds.size.width [UIScreen mainScreen].bounds.size.height 2.Iphone版 ...

  8. TCP/IP 协议难点之一—— IP分片

    1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...

  9. iOS中UINavigationController控制器使用详解

    一.概述 UINavigationController用来管理视图控制器,在多视图控制器中常用.它以栈的形式管理视图控制器,管理视图控制器个数理论上不受限制(实际受内存限制),push和pop方法来弹 ...

  10. IOS开发--支付宝支付

    前言:继上次<IOS开发--微信支付>以来,一直没有太多时间,更新总结详细支付这样的长篇大论,很抱歉.今天,推出支付宝支付的详细流程. 1.开始下载和查看支付宝支付的Demo. 我们直接进 ...