又升一猩!问个小问题可散技术分! 强制转换有如下两种形式:1.object o = "1";string s = (string)o;2.object o = "1";string s = o as string;问一下,这两种有无区别?或你更习惯哪一种? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (string)obj obj 的运行时类型必须是 string 如果不是 就会抛出异常 用 as 方法则会相对平稳 当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。 as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。更严格地说,这种形式的表达式expression as type等效于expression is type ? (type)expression : (type)nullhttp://msdn.microsoft.com/zh-cn/library/cscsdfbt(VS.80).aspx 两种有区别啊第一种转化失败时报错第二种不能转化时得到null不推荐发红包时还带干活的 应该是第2中好点第2种在转换不成功的时候不会包异常,只会返回null但是第一个会包异常 object o = "1";string s = (string)o;这种比较通用。unbox as或者is;强制类型转换as进行类型转换时的机制:它会检查对象的运行时类型,是否是期待类型或者期待类型的派生类型,如果是,就进行转换;如果不是,就返回null。对于null来说,它通过as转换为任何类型后,依然是null,并不会产生异常。as并不会执行用户自定义的类型转换。 强制类型转换的机制:它使用转换操作符来进行类型转换的工作,它会执行.NET框架自带的类型转换机制或者用户自定义的类型转换。就会有转换成功,但是转换后结果不正确的情况,例如将float强行转换成int,就可能会丢失一些信息。 恭喜恭喜!如果输入参数肯定是string类型的话,第一种跟第二种是没区别的。如果输入不定时string,那么第一种强制转换的时候失败会抛出异常,第二种则返回一个空的引用。具体的楼上dada说的很详细。我只是想补充一点儿:as运算符跟is运算符有些像。对象转换时,使用as运算符转换成功返回对象引用,失败时返回空引用。is运算符,类型兼容时返回true,不兼容返回false 我肯定用第二种,但第二种的隐式转换只适用于与引用类型(as 不能用于值类型)用第二种的理由很简单,如果语句较长,可以少写很多括号比如 (Repeater1.Items.FindControl("Label1") as Label).Text比 ((Label)Repeater1.Items.FindControl("Label1")).Text个人认为优雅些 第二种理由:可由结果是否为Null判断是否转换成功,且不会异常. 1.object o = "1";string s = (string)o;第一种的有可能会报错2.object o = "1";string s = o as string;//这个应该还缺个if(o!=null){} 前者如果转换会抛出异常,而后者如果转换失败只会将s置为null.从习惯上来说前者更方便,从程序安全性来说后者更可取! 应该是第2中好点第2种在转换不成功的时候不会包异常,只会返回null但是第一个会包异常 强制转换有如下两种形式:1.object o = "1";string s = (string)o;------------------------------我用第一种 就是习惯而已。 经常用第一种.不论如何,在使用之前都是需要做一次判断的.IS 需要判断类型.AS 需要判断NULL. ...本人习惯用第一种不过本人在通常情况更习惯用以下两种1、object o="1"string i=o.ToString();2、object o="1"string i=Convert.ToString(o);请指教 第二种,安全,就算转不成功也返回null jquery怎么选择xml第一级的节点 SEO:标题怎么写为好? 在vs2008中使用母版页编辑内容页的时候怎么看不到母版页的内容? firefox 显示不正常的问题 datagrid显示及时值问题 表格问题,高手进来看看,解决一下,再线等。。。 找不到指定的模块(异常来自 HRESULT:0x8007007E) VWD环境 对asp.net的高性能方案以及数据缓存方面有研究并希望继续探讨的朋友请进 关于删除最后一行的问题,为什么会出错??请多多指教,表示感谢!!! 如何配置ASP.net 的调试权限? 【初学者求教】有没有办法将div隐藏起来? textbox的动态显示问题
用 as 方法则会相对平稳 当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。
等效于
expression is type ? (type)expression : (type)nullhttp://msdn.microsoft.com/zh-cn/library/cscsdfbt(VS.80).aspx
第一种转化失败时报错
第二种不能转化时得到null不推荐发红包时还带干活的
第2种在转换不成功的时候不会包异常,只会返回null
但是第一个会包异常
string s = (string)o;这种比较通用。unbox
强制类型转换
as进行类型转换时的机制:它会检查对象的运行时类型,是否是期待类型或者期待类型的派生类型,如果是,就进行转换;如果不是,就返回null。对于null来说,它通过as转换为任何类型后,依然是null,并不会产生异常。as并不会执行用户自定义的类型转换。
强制类型转换的机制:它使用转换操作符来进行类型转换的工作,它会执行.NET框架自带的类型转换机制或者用户自定义的类型转换。就会有转换成功,但是转换后结果不正确的情况,例如将float强行转换成int,就可能会丢失一些信息。
如果输入参数肯定是string类型的话,第一种跟第二种是没区别的。
如果输入不定时string,那么第一种强制转换的时候失败会抛出异常,第二种则返回一个空的引用。
具体的楼上dada说的很详细。
我只是想补充一点儿:
as运算符跟is运算符有些像。
对象转换时,使用as运算符转换成功返回对象引用,失败时返回空引用。
is运算符,类型兼容时返回true,不兼容返回false
比 ((Label)Repeater1.Items.FindControl("Label1")).Text个人认为优雅些
1.
object o = "1";
string s = (string)o;
第一种的有可能会报错
2.
object o = "1";
string s = o as string;
//这个应该还缺个
if(o!=null)
{}
第2种在转换不成功的时候不会包异常,只会返回null
但是第一个会包异常
1.
object o = "1";
string s = (string)o;
------------------------------
我用第一种 就是习惯而已。
IS 需要判断类型.
AS 需要判断NULL.
object o="1"
string i=o.ToString();
2、
object o="1"
string i=Convert.ToString(o);请指教