C#中值类型的Equls方法

今天遇到double.Equals(0.0,0)返回False的问题,根据实际判断,使用0.0 == 0 才能正确的返回True,是否C#所有类型的Equals方法都是引用的比较,对于本身不是引用类型的值类型数据,如何判断引用呢,或者是有其他的原因,后面有时间搜索下。

View Code
double dblProduct = 0;

if(double.Equals(dblProduct,0)) //False
if(dblProduct == 0)  // True
{
    double dblGapRate = (dblProduct - 1000) /dblProduct;   
}

 

补充1:代码中存在几个问题,猜测原因如下:

1.double类型的比较问题,double类型和int类型进行比较时,编译器进行了隐式的转换,使得未报编译错误。但Equals时报不等,那==又是转换为什么类型比较的呢;

2.代码在VS2010环境中dblGapRate返回值为-Infinity,以前应该有个期望的DivideByZeroException,难道是优化的结果?

3.dblProduct.ToString()的结果为“0”,在监视中查看的为“0.0”,有何不同?

posted @ 2013-03-13 10:02  laughter  阅读(266)  评论(0编辑  收藏  举报