强制转换有如下两种形式:
1.
object o = "1";
string s = (string)o;2.
object o = "1";
string s = o as string;问一下,这两种有无区别?或你更习惯哪一种?

解决方案 »

  1.   

    (string)obj   obj 的运行时类型必须是 string 如果不是 就会抛出异常
     用 as 方法则会相对平稳 当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。
      

  2.   

    as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。更严格地说,这种形式的表达式expression as type
    等效于
    expression is type ? (type)expression : (type)nullhttp://msdn.microsoft.com/zh-cn/library/cscsdfbt(VS.80).aspx
      

  3.   

    两种有区别啊
    第一种转化失败时报错
    第二种不能转化时得到null不推荐发红包时还带干活的
      

  4.   

    应该是第2中好点
    第2种在转换不成功的时候不会包异常,只会返回null
    但是第一个会包异常
      

  5.   

    object o = "1";
    string s = (string)o;这种比较通用。unbox
      

  6.   

    as或者is;
    强制类型转换
    as进行类型转换时的机制:它会检查对象的运行时类型,是否是期待类型或者期待类型的派生类型,如果是,就进行转换;如果不是,就返回null。对于null来说,它通过as转换为任何类型后,依然是null,并不会产生异常。as并不会执行用户自定义的类型转换。
      强制类型转换的机制:它使用转换操作符来进行类型转换的工作,它会执行.NET框架自带的类型转换机制或者用户自定义的类型转换。就会有转换成功,但是转换后结果不正确的情况,例如将float强行转换成int,就可能会丢失一些信息。
      

  7.   

    恭喜恭喜!
    如果输入参数肯定是string类型的话,第一种跟第二种是没区别的。
    如果输入不定时string,那么第一种强制转换的时候失败会抛出异常,第二种则返回一个空的引用。
    具体的楼上dada说的很详细。
    我只是想补充一点儿:
    as运算符跟is运算符有些像。
    对象转换时,使用as运算符转换成功返回对象引用,失败时返回空引用。
    is运算符,类型兼容时返回true,不兼容返回false
      

  8.   

    我肯定用第二种,但第二种的隐式转换只适用于与引用类型(as 不能用于值类型)用第二种的理由很简单,如果语句较长,可以少写很多括号比如  (Repeater1.Items.FindControl("Label1") as Label).Text
    比 ((Label)Repeater1.Items.FindControl("Label1")).Text个人认为优雅些
      

  9.   

     第二种理由:可由结果是否为Null判断是否转换成功,且不会异常.
      

  10.   

     
    1.
    object o = "1";
    string s = (string)o;
    第一种的有可能会报错
    2.
    object o = "1";
    string s = o as string;
    //这个应该还缺个
    if(o!=null)
    {}
      

  11.   

    前者如果转换会抛出异常,而后者如果转换失败只会将s置为null.从习惯上来说前者更方便,从程序安全性来说后者更可取!
      

  12.   

    应该是第2中好点
    第2种在转换不成功的时候不会包异常,只会返回null
    但是第一个会包异常
      

  13.   

    强制转换有如下两种形式:
    1.
    object o = "1";
    string s = (string)o;
    ------------------------------
    我用第一种  就是习惯而已。
      

  14.   

    经常用第一种.不论如何,在使用之前都是需要做一次判断的.
    IS 需要判断类型.
    AS 需要判断NULL.
      

  15.   

    ...本人习惯用第一种不过本人在通常情况更习惯用以下两种1、
    object o="1"
    string i=o.ToString();
    2、
    object o="1"
    string i=Convert.ToString(o);请指教
      

  16.   

    第二种,安全,就算转不成功也返回null