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#中哈希表(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中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>
-
详解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# 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#中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#泛型列表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<T> Contains<T>()的用法小结
泛型List<T>中有一个比较列表是否已包含对象的方法Contains<T>(),今天在网上搜了一个用法,记录下来,备查. 要用此方法比较我们的自定义对象,首先要有一个比较器, 要注意的是,这里的比较器是实现IEqualityComparer<T>接口的,不要写成IComparer<T>. 如下: 复制代码 代码如下: /// <summary> /// 描 述:弹出模型对象列表比较器(根据ID比较) /// </summ
-
C#中Array与ArrayList用法及转换的方法
ArrayList与Array的区别概述 ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例如: Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内存重新分配和元素复制. ArrayList 提供添加.插入或移除某一范围元素的方法.在 Array 中,您只能一次获取或设置一个元素的值. 使用 Syn
随机推荐
- 理解Golang中的数组(array)、切片(slice)和map
- Perl中使用File::Lockfile确保脚本单实例运行
- SqlServer备份数据库的4种方式介绍
- jQuery 源码分析笔记(5) jQuery.support
- 全面了解Python的getattr(),setattr(),delattr(),hasattr()
- jQuery结合C#实现上传文件的方法
- 微信支付开发交易通知实例
- python数据类型_元组、字典常用操作方法(介绍)
- jsp按格式导出doc文件实例详解
- MySQL 绿色版安装方法图文教程
- Ajax 用户名验证是否存在
- Apache 多站点虚拟主机配置方法
- 基于jquery的兼容各种浏览器的iframe自适应高度的脚本
- 页面只有一个text的时候,回车自动submit的解决方法
- ES7中利用Await减少回调嵌套的方法详解
- VC++中进程与多进程管理的方法详解
- HashMap工作原理_动力节点Java学院整理
- hibernate 命名查询如何实现
- Java 线程池原理深入分析
- javascript帧动画(实例讲解)
