c#之is和as的区别用法
2015-09-18 10:20
369 查看
一、类型转换
**************************************************************************************************************
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;
3.使用GetType可以取得任何对象的精确类型;
4.基本类型可以使用Convert类实现类型转换;
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);
**************************************************************************************************************
二、is/as示例
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,刚返回false;
示例:
object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
示例:
object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
MessageBox.Show("转换成功!");
else
MessageBox.Show("转换失败!");
注:as比is少执行一次兼容性检查,性能可能会高一点点。
本文实例讲述了C#中is和as的用法,对加深is与as用法的理解有一定的帮助借鉴作用。具体如下:
现来看个例子:
?
这样会报错(InvalidCastException),由于C#安全机制,它会去判断一次。我们这里做了非法的转换。
Is做判断:is说判断对象是不是你要的那个类型(这里说User)
修改后的示例如下:
?
这样的话,我们在obj is User这里做了一次判断,我们刚才说了,(User)obj这样的操作(强制转换)编译器还会做一次操作,这样就有性能上面的消耗。来看看AS。
AS操作:如果说改对象就转换,不是则返回null.
?
**************************************************************************************************************
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;
3.使用GetType可以取得任何对象的精确类型;
4.基本类型可以使用Convert类实现类型转换;
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);
**************************************************************************************************************
二、is/as示例
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,刚返回false;
示例:
object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
示例:
object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
MessageBox.Show("转换成功!");
else
MessageBox.Show("转换失败!");
注:as比is少执行一次兼容性检查,性能可能会高一点点。
本文实例讲述了C#中is和as的用法,对加深is与as用法的理解有一定的帮助借鉴作用。具体如下:
现来看个例子:
?
Is做判断:is说判断对象是不是你要的那个类型(这里说User)
修改后的示例如下:
?
AS操作:如果说改对象就转换,不是则返回null.
?
相关文章推荐
- 抄 c#邮件发送 关于邮箱的端口号及SMTP 服务器
- 设计模式C#实现(八)——原型模式
- c#委托实例化和调用语句
- 虚拟串口 vspd + C#2.0 测试串口 收发数据
- C# 抓取程序运行路径
- C# Assert Method
- C# 自带的界面控件 chart,初步使用体验
- C#多线程学习 之 线程池[ThreadPool](转)
- C#编程总结 dynamic(转)
- C#方便操作数据总结
- C#中的扩展方法
- C#内存操作
- C#关于使用枚举遇到的问题----Parse()方法使用注意
- .NET基础--索引器
- C#中使用强制类型实现字符串和ASCII码之间的转换
- C#.net 多级cookie写入读取代码,一级、二级域名
- C#实现字符串数组的TreeMap排序
- C#关于使用枚举遇到的问题----Type运算符使用的必要性
- C# AttributeUsage
- C#笔记 值类型 引用类型