CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#中(double)str;与Convert.ToDouble(str);有什么区别?

楼主wztgq(♂T_gq♀)2006-07-02 09:48:49 在 .NET技术 / C# 提问

小弟初学C#,很多地方弄不明白。大家帮忙解答一下:)  
  1.   string   str   =   "32323";  
  2.   double   a   =   (double)str   ;  
  3.   double   a   =   Convert.ToDouble(str);    
   
   
  第3行会转换成功,第2行就会报错,书上讲是ToDouble方法会自动进行溢出检查,上面的实例好像不只是样啊,为什么第2行会失败?  
   
  问题点数:20、回复次数:6Top

1 楼Knight94(愚翁)回复于 2006-07-02 10:09:20 得分 5

string   =>   double:  
   
  Method1:   double.TryParse  
  Method2:   Convert.ToDouble  
  Top

2 楼diandian82(点点(nothing))回复于 2006-07-02 10:46:14 得分 5

str是个对象,又不是指针,当然不能直接那样转了.它们在内存中的分布也是不一样的。Top

3 楼SiteManage(SiteManage)回复于 2006-07-02 11:20:40 得分 10

楼上说得有道理,   我也补充一点  
  在C#中,   类似于(double)str的这种数据类型转换,   被称为"显式强制转换",   而实现它的机制,   其实是   调用了一个在对象类型内部定义的方法,   其声明方式类似于下:  
  public   static   explicit   operator   double(int   a)  
  {  
        ...  
  }  
   
  其中的   方法名   double   表示你要转换的目标类型名称,   而参数则是你要转换的源类型,   返回是operater.  
   
  所以,   你的第二行会报错的原因是因为在   double   的类型声明中,   没有定义   double(int   a)的这种函数.  
   
  而至于你说的Convert.ToDouble(str);   或者   一楼说的TryParse,   其实现原理又与上面的不太一致,   他们的内部是实现了一个叫做   IConvertable的接口,   如果你去看   MSDN,   会发现在很多基础类型的声明中,   都实现了这个叫做   IConvertible的接口,   具体IConvertible的详细信息,   你找MSDN,   上面会有很详细的说明  
  Top

4 楼SiteManage(SiteManage)回复于 2006-07-02 11:23:11 得分 0

补充一个   MSDN   中找到的例子  
  //   Must   be   defined   inside   a   class   called   Farenheit:  
  public   static   explicit   operator   Celsius(Farenheit   f)  
  {  
          return   new   Celsius((5.0f/9.0f)*(f.degrees-32));  
  }  
   
  调用的时候如下使用  
  Farenheit   f   =   new   Farenheit(100.0f);  
  Celsius   c   =   (Celsius)f;  
  Top

5 楼blueboyzme()回复于 2006-07-02 11:27:55 得分 0

楼上是高手,佩服,我编程的时候也常常遇到这样的问题,一般用强制转换不行就用convert.to+要转换的类型,没有研究过原理,上面说的是一个是值类型一个是引用,在内存的分布不同。Top

6 楼wztgq(♂T_gq♀)回复于 2006-07-04 18:34:18 得分 0

学到了不少,不过有的地方还不是很懂!Top

相关问题

关键词

得分解答快速导航

  • 帖主:wztgq
  • Knight94
  • diandian82
  • SiteManage

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo