HongKong

IT

 

[导入]是.NET Bug不断吗?

今天在博客园阅读了一篇文章《为何.NET总是Bug不断??》,心为之一惊,以为又发现了什么新Bug,马上进去查看其内容,并且顺带看了所有的评论。

一个非常简单的程序

string action = "cancel"; if(action.Equals("cancel")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); }
>
置疑有两个:
  1. 在立即窗口中,无法使用action.Equals;
  2. 为什么答案不是true?
关于第1个问题,我做了一下实验,完全可以使用,因为action本身并非C#的关键字。我在输入时还会自动提示,但请注意,在使用立即窗口前,要确认的两件事情:
  • 当前是使用的Debug模式,而非Release模式
  • 在程序中设置了正确的断点,程序并且运行到该断点。

关于立即窗口的具体使用办法,请阅读MSDN Library当中的文字:

当代码处于中断模式时,“立即窗口”同断点所在的过程具有相同的范围。这样可以测试和更改变量的值。此外,还可用“立即窗口”调用过程并用不同的数据测试过程,但无需从头开始运行应用程序。

第二个问题,我的测试并没有出现错误,直接显示的是True,我比较关心的是评论栏中所发表的评论,有人写道:用Equals好像比较的是对象,虽然字符串是相同的,但如果是对象怎么会就是一个呢? 。然后有人在后面以导师的身份教导我们说:他说的是对的。如果你阅读了这篇文章,以后可能就会先入为主了,不会有人遇到此问题再去阅读权威资料了,那么是不是正确的呢?

请查看MSDN文档,因为action是一个String的对象,那么查看一下String.Equals方法的说明,里面很清楚的表明:String.Equals方法是用来确定两个 String 对象是否具有相同的值

当然,有兴趣者或者刨根究底者可以去阅读这部分源代码,即SSCLI或者MONO的实现。

做为程序员,希望大家还是少一些浮躁。类似于热衷于国内某些媒体的头版头条,如《微软专家质疑.NET》,或者《微软反间谍软件逆子轼父删除IE》之类的愚人节新闻。把大部分精力浪费在这些毫无意义的争论上,对大家没有益处。只会越来越浮躁。

千万不要论坛文化带到博客园来

 

文章来源:http://blog.joycode.com/joy/archive/2005/03/31/46677.aspx

posted on 2005-03-31 18:19 shanghaifeng's Blog 阅读(164) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿

随笔档案(30)

相册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜