点击这里给我发消息 点击这里给我发消息

Asp.net开发中的诡异现象

添加时间:2010-1-5
    相关阅读: 开发 页面 网络 程序 C# 系统 项目

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

  诡异现象一:

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)”时,就陷入了死循环!

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

  最后,请容许我用一行文字宣传一下我们的作品吧:如果您困扰于ERP的昂贵和繁杂,那么请到http://landian.cq.cn/体验一下蓝点通用信息管理系统的清爽、时尚和灵活吧,您一定会爱上她!

本文作者:未知
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册