初学,提问,谢谢!

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)强制转换的区别以及他们的作用和分别使用在什么样的情况之下,谢谢。
...全文
95 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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(布鲁斯南) 的观点
全能Linux基本技能教程 我们注重在原有的基础上更进一步,与广大网友一同打造良好,快捷的学习环境。请选择论坛风格,目前论坛提供二种风格供学习者选择,在论坛下方就可以找到风格选择。 红联论坛致力构架为文章论坛,就是说在每各版区都存放有大量的学习教程。 红联论坛目前的技术文献与电子教材可以满足广大Linux学习者的需求,而且文献与电子教材日益增多,目前提供两个学习平台:网页形式与论坛,如果只想阅读文章或找询文章建议采用网页形式学习平台:http://www.linux110.com 平台搜索:http://www.linuxdiyf.com/search.php 论坛学习平台:http://www.linuxdiyf.com/bbs 二,以下是各版区所存放的主要技术文献: Linux安装及学习指导---主要介绍Linux的安装和注意事项,一些重要软件安装,学习Linux指导等内容。 Shell---不用介绍了吧,呵呵。 Linux软件下载---推荐Linux常用软件,包含下载地址与安装方法。 Linux新手学堂---这里存放着Linux最基础的文章,大多是学习Linux必学的内容,较容易接受。建议初学者多来这个专区学习。 系统安装和维护{提问专区}---有关疑问及讨论问题。 系统管理及桌面应用---这里存放Linux管理的相关内容,文章较经典,初中级水平都可在这专区学习,中级学习者应多学这一专区的内容。 Linux其它发行版讨论---主要是讲redhat等其它版本的学习,还是进来逛逛才清楚吧,精彩不容错过。 Linux下载分享{酷件、书籍、视频分享}---提供帮助成长的电子书籍及视频等。 其它专区对号入座 充分利用搜索:http://www.linuxdiyf.com/search.php 如果要进行更为详细的信息搜索,请使用 高级搜索功能:http://www.linuxdiyf.com/bbs/search.php{本功能目前只面向注册会员}注册成为会员:http://www.linuxdiyf.com/bbs/register.php 如果红联论坛没有你需要的内容:请到这里:http://www.linuxdiyf.com/bbs/rf/lz7.htm 最后:你在使用红联论坛过程中有好的意见及建议请随时向我们提出,谢谢

111,097

社区成员

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

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

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