class ConsoleApplication1
{
static void Main(string[] args)
{
ArrayList myArrayList = new ArrayList();
myArrayList.Add( "aaaaaaa" );
myArrayList.Add( "bbbbbbb" );
Console.WriteLine( myArrayList[0].ToString() );
Console.WriteLine( ( String )myArrayList[1] );
Console.ReadLine();
}
}
请帮我解释一下myArrayList[0].ToString()调用ToString()方法与用(String)强制转换的区别以及他们的作用和分别使用在什么样的情况之下,谢谢。

解决方案 »

  1.   

    只知道 你以上所指两种强制转换 失败会引发 NullReferenceException而  myArrayList[0] as String 响应 则会返回null 不引发异常
      

  2.   

    ToString()是利用方法将值作为String类型来输出。。(String)是将值的类型进行强制转换。。两者在运用时,区别不是很大。。但一般使用第一种,比较安全。。较为常用。。
      

  3.   

    string str111 = "111";
    string str222 = "222";
    ArrayList al = new ArrayList();al.Add(str111);
    al.Add(str222);al[0] = null;
    //异常
    //string str333 = al[0].ToString();
    //null
    string str444 = (string)al[0];
    //""
    string str777 = Convert.ToString(al[0]);//"222"
    string str555 = al[1].ToString();
    //"222"
    string str666 = (string)al[1];由此看出,当string不是null时,两者是没有什么区别的。
      

  4.   

    Console.WriteLine( myArrayList[0].ToString() );
    Console.WriteLine( ( String )myArrayList[1] );
    第一种一般是为了得到一个数据对象或实例的string表示方式,一般的对象都有相应的ToString方法
    而第二种一般在知道需要转换的对象可以转换为string类型时用,也就是强制转换,否则会引发异常
      

  5.   

    .ToString()是一个实例方法,可以对它进行重写..
    另外用ToString()方法只能将不为DBNull的值转换成字符串,如果该字段的值为Null那么用这个方法转换将出错,可以用Convert.ToString()来做转换就不会出错了,或是用Convert.IsDbNull来先做判断。
      

  6.   

    ToString()是类自带的一个方法接口.调用它不会出现任何问题,而显示的内容与函数的实现有关
    而(STRING)是一个强制类型转换,有可能会抛出EXCEPTION
      

  7.   

    同意 brucenan999(布鲁斯南) 的观点
      

  8.   

    swordragon(古道热肠) 的例子可以解开你的谜团。
      

  9.   

    object到string的几种方式 
    通常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。
    如果我们是将一个string对象放在容器(如Session)中,而取出时是object对象,这时我们必须将之转换回string对象,那么我建议使用as或(string)obj强制转换。如果我们用.ToString,那么我们就必须在使用前先检查是否为null,而使用.ToString和Convert.ToString有可能隐藏错误,比如你可能用一个username标识一个user的名字,即string类型,但可能你会在另一处无意写下Session["username"]=(另一个对象),于是你在后面取这个值的时候便取到后面的这个值,由于你是用的.ToString,所以仍然会成功运行,只是值已不是你希望的值,于是错误在不知不觉中隐藏过去了。如果你是用的as,这时候你取到的就是null值,如果你是用的(string)obj强制转换,则会抛出异常。这样我们才能发现这个异常。总之,我们应该了解它们之间的区别,具体在用时才能选最适合的一个。
    另:
    Convert.ToString的时候如果参数为null并不见得就返回null. 
    如果你传值是:object obj=null;string result = Convert.ToString(obj); 
    这时result为null值. 
    如果你传真是:string obj=null;string result = Convert.ToString(obj); 
    这时result为空字符串.
    ///////////////////////////////////////////////////////////////
    http://hainang1234.cnblogs.com/archive/2005/10/04/248507.html