通常object到string有四种方式:(假设有object obj)obj.ToString,Convert.ToString,(string)obj,obj as string。
他们都能将object对象转换成string对象。我就讲讲他们的异同以及在实际中应该使用哪个。
前两个方法通常是由别的对象得到string对象,它们间的区别只表现在要转换的对象为null时,如果obj为null,调用obj.ToString方法会导致NullReferenceException异常,调用Convert.ToString不会抛出异常而返回一个null。
用强制转换(string)obj要求obj的运行时类型必须是string。如果不是,就会抛出异常。用as方法则会相对平稳,当obj的运行时类型不是string时会返回null而不抛出异常。
所以在通常在我们需要得到某个对象的string表达形式时,我们应该使用ToString和Convert.ToString,这时候你就得根据情形选一个,假如你能保证你的对象不为null,则两个差不多。如果有可能为null,你就应该用Convert.ToString,如果你希望它为null的时候抛出异常,那么当然可以选择.ToString。
-------------------------------------------分界线---------------------------------------------------------
补充:
通常较常用的数据间转换是parse()和toString()
前者是把字符串转成数值,而后者相反。由于toString()是Object中的方法,因此 所有类都会有自己的toString()方法,只是看不同的类是否有重新复写。而你所调用的ToString()方法,是调用示例所属类的ToString()方法。
一般(String)方法,也就是强制转型,是我们明明知道“谁是谁”的时候用到。多出现在继承inheritance的例子中。比如,Dog类继承Animal类,当我们需要upcast或downcast的时候(泛化和聚化)会用到强制转型。因为我们很确定,dog就是animal。而向下转型的时候,比如在一个Array里面,我们要存入一组数据,为了保证所有数据都能够存入我们往往会对这个数组存数数据的类型扩大化,比如都扩大到Animal。而在我们取数据的时候,我们很确定第二个位置就是一个Cat类型的实例,这个时候(也就是DownCast时),我们就回强制转型(Cat)。
强制转型相比Something As String的方法要强烈,如果转型不成功会直接抛出异常,而后者只是返回一个null值。
···
···