C# 中as 与 is的用法及区别
2011-03-09 10:19
381 查看
一、类型转换
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;
3.使用GetType可以取得任何对象的精确类型;
4.基本类型可以使用Convert类实现类型转换;
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);
二、is/as示例
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,刚返回false;
示例:
C#代码
object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
示例:
C#代码
object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
MessageBox.Show("转换成功!");
else
MessageBox.Show("转换失败!");
注:as比is少执行一次兼容性检查,性能可能会高一点点。
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;
3.使用GetType可以取得任何对象的精确类型;
4.基本类型可以使用Convert类实现类型转换;
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);
二、is/as示例
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,刚返回false;
示例:
C#代码
object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
object o = "abc"; if (o is string) //执行第一次类型兼容性检查 { string s = (string)o; //执行第二次类型兼容性检查,并转换 MessageBox.Show("转换成功!"); } else { MessageBox.Show("转换失败!"); }
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
示例:
C#代码
object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
MessageBox.Show("转换成功!");
else
MessageBox.Show("转换失败!");
object o = "abc"; string s = o as string; //执行第一次类型兼容性检查,并返回结果 if (s != null) MessageBox.Show("转换成功!"); else MessageBox.Show("转换失败!");
注:as比is少执行一次兼容性检查,性能可能会高一点点。
相关文章推荐
- c#之is和as的区别用法
- C#事件与委托,事件与回调的用法区别
- StringUtils.isEmpty和StringUtils.isBlank用法和区别
- c#中out与ref的用法与区别
- 解析C#中is和as操作符的用法
- 从 “x is null 和 x == null” 的区别看 C# 7 模式匹配中常量和 null 的匹配
- C#中StringBuilder用法以及和String的区别
- C#中new的用法,及与override的区别
- C#中As 及Is 的用法
- C#中AS和IS关键字的用法
- C# 关键字is,as的区别
- C#中as与is的用法(收藏)
- C#中As 及Is 的用法
- c#中out、ref和params的用法与区别
- C#中StringBuilder用法以及和String的区别分析
- c# as is 的区别
- setTimeout和setInterval的区别及用法、C#中遍历Hashtable对象[哈希表]的3种方法【遍历Hashtable】
- C#中StringBuilder用法以及和String的区别分析
- desc() isKindOf() cast() isA() 区别和用法
- C# class和struct的区别和用法