Asp.net开发中OneClass类定义遇到的问题

原创|其它|编辑:郝浩|2009-07-31 13:53:41.000|阅读 483 次

概述: 在调试程序时,我们检查代码的过程通常会跳过那些自己认为绝对不可能出错的代码或逻辑。然而有时候,当检查了一遍又一遍却找不到任何出错的可能性,而程序却的的确确不是按我们所设想的那样在运行。这时,很多人就认为自己遇到了灵异事件。这种体验几乎每个程序员都有过,但最终往往事实证明,是我们自己错了,错在不应该太坚信自己的常识。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  在调试程序时,我们检查代码的过程通常会跳过那些自己认为绝对不可能出错的代码或逻辑。然而有时候,当检查了一遍又一遍却找不到任何出错的可能性,而程序却的的确确不是按我们所设想的那样在运行。这时,很多人就认为自己遇到了灵异事件。这种体验几乎每个程序员都有过,但最终往往事实证明,是我们自己错了,错在不应该太坚信自己的常识。

  诡异现象一:

    1bool AllowDisplay = CheckPower();
  2p.Visible = AllowDisplay;
  3if (p.Visible) {
  4  //do something;
  5}

   注:p是ASPx页面上声明的一个<p runat="server" id="p">...</p>标签。

  在运行时发现,无论如何都执行不到if语句内部的do something部分的代码,即使调试时AllowDisplay的值明明为True也是如此!

  以前写代码时经常采用类似的做法,都没出过任何问题,然后现在这个简单至极的代码却让人摸不着头脑了。

  最后经过多番调试,才找到原因:p的上级容器控件的声明代码中被设置了Visible="false"!

  诡异现象二:

  1OneClass obj = GetOneClass();
  2if (obj == null){
  3  //do something;
  4 }

  程序运行时,同样无法执行到if语句内部的do something部分的代码。这倒不奇怪,奇怪的是,调试发现,在“if (obj == null)”这一行代码中出现了异常!

  按说,无论你obj是不是为空引用,这儿也不应该出错呀,这行代码在我的C#编程生涯中可是写了无数次的,怎么突然就出问题了呢?

  在CSDN上问了,也有很多人回答了,但没一个人说到真正的症结所在。不得已,只能自己不停地动脑筋加调试,最后找到原因了。这是由于在OneClass这个类定义的操作符重载中,==操作符重载代码中缺少了对目标对象是否为空引用的判断,所以在程序运行到“if (obj == null)”时,就陷入了死循环!

  以上都是我在参与开发一个“通用信息管理系统”项目的过程中遇到的一些问题。类似的貌似诡异的现象还有不少,不过大多都在通过搜索网络后得到了答案,就不一一列出了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP