初学,提问,谢谢!

morris_lz 2005-11-17 12:04:52
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)强制转换的区别以及他们的作用和分别使用在什么样的情况之下,谢谢。
...全文
93 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
brucenan999 2005-11-17
  • 打赏
  • 举报
回复
ToString()是类自带的一个方法接口.调用它不会出现任何问题,而显示的内容与函数的实现有关
而(STRING)是一个强制类型转换,有可能会抛出EXCEPTION
chaobeyond 2005-11-17
  • 打赏
  • 举报
回复
.ToString()是一个实例方法,可以对它进行重写..
另外用ToString()方法只能将不为DBNull的值转换成字符串,如果该字段的值为Null那么用这个方法转换将出错,可以用Convert.ToString()来做转换就不会出错了,或是用Convert.IsDbNull来先做判断。
jetxia 2005-11-17
  • 打赏
  • 举报
回复
Console.WriteLine( myArrayList[0].ToString() );
Console.WriteLine( ( String )myArrayList[1] );
第一种一般是为了得到一个数据对象或实例的string表示方式,一般的对象都有相应的ToString方法
而第二种一般在知道需要转换的对象可以转换为string类型时用,也就是强制转换,否则会引发异常

swordragon 2005-11-17
  • 打赏
  • 举报
回复
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时,两者是没有什么区别的。
止戈而立 2005-11-17
  • 打赏
  • 举报
回复
ToString()是利用方法将值作为String类型来输出。。

(String)是将值的类型进行强制转换。。

两者在运用时,区别不是很大。。但一般使用第一种,比较安全。。较为常用。。
ld_thinking 2005-11-17
  • 打赏
  • 举报
回复
只知道 你以上所指两种强制转换 失败会引发 NullReferenceException

而 myArrayList[0] as String 响应 则会返回null 不引发异常
hainang1234 2005-11-17
  • 打赏
  • 举报
回复
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
jxufewbt 2005-11-17
  • 打赏
  • 举报
回复
swordragon(古道热肠) 的例子可以解开你的谜团。
builder666666 2005-11-17
  • 打赏
  • 举报
回复
同意 brucenan999(布鲁斯南) 的观点

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧