C#中is和as用法实例分析
本文实例讲述了C#中is和as的用法,对加深is与as用法的理解有一定的帮助借鉴作用。具体如下:
现来看个例子:
public class User { } public class Group { } class Program { static void Main(string[] args) { Object oUser = new User(); Object user = (Group)oUser; } }
这样会报错(InvalidCastException),由于C#安全机制,它会去判断一次。我们这里做了非法的转换。
Is做判断:is说判断对象是不是你要的那个类型(这里说User)
修改后的示例如下:
class Program { static void Main(string[] args) { Object obj = new User(); if (obj is User) { User user = (User)obj; } } }
这样的话,我们在obj is User这里做了一次判断,我们刚才说了,(User)obj这样的操作(强制转换)编译器还会做一次操作,这样就有性能上面的消耗。来看看AS。
AS操作:如果说改对象就转换,不是则返回null.
class Program { static void Main(string[] args) { Object obj = new User(); User user = obj as User; if(user==null) { // handle error //.... } } }
注:个人比较喜欢用As,简化了操作也提高了性能,做一个NULL判断,直接处理这种异常也说很方便。
希望本文所述方法对大家的C#程序设计能有一定的帮助与借鉴价值。
相关推荐
-
C# List<T> Contains<T>()的用法小结
泛型List<T>中有一个比较列表是否已包含对象的方法Contains<T>(),今天在网上搜了一个用法,记录下来,备查. 要用此方法比较我们的自定义对象,首先要有一个比较器, 要注意的是,这里的比较器是实现IEqualityComparer<T>接口的,不要写成IComparer<T>. 如下: 复制代码 代码如下: /// <summary> /// 描 述:弹出模型对象列表比较器(根据ID比较) /// </summ
-
C#中AS和IS关键字的用法
在程序中,进行类型转换是常见的事,C#支持基本的强制类型转换方法,例如: Object obj1 = new NewType(); NewType newValue = (NewType)obj1; 这样强制转换的时候,这个过程是不安全的,因此需要用try-catch语句进行保护,这样一来,比较安全的代码方式应如下所示: Object obj1 = new NewType(): NewType newValue = null: try { newValue = (NewType)obj1: }
-
C#中Array与ArrayList用法及转换的方法
ArrayList与Array的区别概述 ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例如: Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内存重新分配和元素复制. ArrayList 提供添加.插入或移除某一范围元素的方法.在 Array 中,您只能一次获取或设置一个元素的值. 使用 Syn
-
C# List<T>的用法小结
所属命名空间:System.Collections.Generic public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable List<T>类是 ArrayList 类的泛型等效类.该类使用大小可按需动态增加的数组实现 IList<T> 泛型接口. 泛型的好处: 它为使用c#语言编写面向对象程
-
详解C#中的Async和Await用法
这篇文章由Filip Ekberg为DNC杂志编写. 自跟随着.NET 4.5 及Visual Studio 2012的C# 5.0起,我们能够使用涉及到async和await关键字的新的异步模式.有很多不同观点认为,比起以前我们看到的,它的可读性和可用性是否更为突出.我们将通过一个例子来看下它跟现在的怎么不同. 线性代码vs非线性代码 大部分的软件工程师都习惯用一种线性的方式去编程,至少这是他们开始职业生涯时就被这样教导.当一个程序使用线性方式去编写,这意味着它的源代码读起来有的像Figure
-
c#中switch case的用法实例解析
本文实例实现C#以一个收银付费的小程序演示switch case语法如何使用,读入用户选择,把用户的选择赋值给变量n,再根据用户的输入提示付费信息,这种情况使用switch case语法就非常合适了,对于C#的初学者来说,对一些基础技巧的使用是应该非常熟悉的. 具体代码如下: using System; using System.IO; class SwitchApp { public static void Main() { //显示提示 Console.WriteLine("三种选择型号:
-
C#中哈希表(Hashtable)的介绍及简单用法
key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对 <BR><BR><BR>在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value); 在哈希表中去除某个key/value键值对:HashtableObject.Remove(key); 从哈希表中移除所有元素
-
关于C#泛型列表List<T>的基本用法总结
示例代码如下:namespace SampleListT{ class Program { static void Main(string[] args) {//using System.Collections.Generic; 命名空间中的List<T>//using System.Collections; 命名空间中的ArrayList //都实现了列表集合,一个是泛形集合,一个是非泛型的//下面我们将Person对象加到集合中 Person p1 = new P
-
C#中JavaScriptSerializer帮助类用法实例
本文实例讲述了C#中JavaScriptSerializer帮助类用法.分享给大家供大家参考.具体如下: 关键代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Web.Script.Serialization; namespace YanZhiwei.DotNet3._5.Utilities.Common {
-
C# List中FindAll用法的一些简单示例
如下所示: 复制代码 代码如下: using System;using System.Collections.Generic; public partial class List : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { CreateList(); } private void CreateList() { List<string>
随机推荐
- 使用ajax实现分页技术
- sql left join 命令详解
- 解决Vue页面固定滚动位置的处理办法
- 理解二叉堆数据结构及Swift的堆排序算法实现示例
- js 生成随机汉字的问题
- Yii2 批量插入、更新数据实例
- 在Python中处理列表之reverse()方法的使用教程
- 浅谈MySql的存储引擎(表类型)
- Javascript中的for in循环和hasOwnProperty结合使用
- JavaEE通过response实现请求重定向
- ASP XML操作类代码
- 用CSS代码轻松Diy你的网页滚动条
- jQuery模仿阿里云购买服务器选择购买时间长度的代码
- javascript中alert()与console.log()的区别
- 将Datatable转化成json发送前台实现思路
- iis ftp 多用户隔离实现方法(根目录)
- asp.net页面触发事件panel滚动条高度不变的实现方法
- 解决Jstree 选中父节点时被禁用的子节点也会选中的问题
- pandas全表查询定位某个值所在行列的方法
- python将pandas datarame保存为txt文件的实例