未将对象引用设置到对象的实例

上传人:沈*** 文档编号:163088684 上传时间:2022-10-20 格式:DOCX 页数:33 大小:141.22KB
收藏 版权申诉 举报 下载
未将对象引用设置到对象的实例_第1页
第1页 / 共33页
未将对象引用设置到对象的实例_第2页
第2页 / 共33页
未将对象引用设置到对象的实例_第3页
第3页 / 共33页
资源描述:

《未将对象引用设置到对象的实例》由会员分享,可在线阅读,更多相关《未将对象引用设置到对象的实例(33页珍藏版)》请在装配图网上搜索。

1、未将对象引用设置到对象的实例 2011-10-12 21:28 提问者:Lee2011_6_7 | 悬赏分:5 | 浏览次数:2061次using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1 public partial class

2、Form1 : Form public Form1() InitializeComponent(); public class oper public int i; public double j; public char k; private void button1_Click(object sender, EventArgs e) oper myOper = new oper10; myOper0.i = 1; /这一行报错,未将对象引用设置到对象的实例 问题补充: 就是问一下这个问题”未将对象引用设置到对象的实例“是什么意思,该怎么解决2011-10-12 22:23 最佳答案 首先这

3、里报这个错是因为 myOper0为空,取不到它的属性i,所以会报错。其次这里的oper myOper = new oper10仅仅是实例化了一个数组,但是数组里面的对象是没有实例化的,仅仅是声明了一串oper对象而已。再次为什么这里如果是int abc=new int10或者char abc=new char10再赋值给abc0就不会报错呢?这是因为值类型在声明的时候,默认初始值为0;而引用类型在声明时,默认初始值为null。因为类属于引用类型,所以你这个类数组里的oper对象声明后默认为null,造成了“未将对象引用设置到对象的实例”这个错误。至于解决方法,你只需要给你要赋值的数组里某一个对

4、象实例化就行了,例如你这里写的:oper myOper = new oper10; myOper0=new oper();/加一个对象的实例化 myOper0.i = 1;未将对象引用设置到对象的实例文字大小:大 中 小 打印-未将对象引用设置到对象的实例 一、网络上的一般说法1、ViewState对象为Null。2、DateSet空。3、sql语句或Datebase的原因导致DataReader空。4、声明字符串变量时未赋空值就应用变量。5、未用new初始化对象。6、Session对象为空。7、对控件赋文本值时,值不存在。8、使用Request.QueryString()时,所获取的对象不存

5、在,或在值为空时未赋初始值。9、使用FindControl时,控件不存在却没有做预处理。10、重复定义造成未将对象引用设置到对象的实例错误.二、(1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.(2)控件名称与codebehind里面的没有对应(3)未用new初始化对象(4)在程序中所引用的控件不存在解决方法:(1)使用try.catch.finally捕捉错误,或直接用response.write()输出所取的变量值(2)查看代码中是否存在未初始化的变量三、SqlConnection.O

6、pen未将对象引用设置到对象的实例在使用VS2003开发ASP.NET程序时候有时候操作SqlConnection对象的Open()方法时候会出现未将对象引用设置到对象的实例。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例。源错误:。conn.Open();.跟踪调试也肯定可以确定对conn进行new操作但是程序经常在这个地方报错,但是有时候重启服务器或者重启IIS有能正常使用了。怎么调试也找不到问题那么这个时候可能是你

7、本机上安装的.NETFRAMEEWORK框架有问题,可能没有没有安装SP1.1补丁需要打NETFRAMEEWORK1.1SP1的补丁,到微软官方网站下载安装后就好了。四、一般出现NullReferenceException异常的我个人总结有以下情况:1、对象所在的命名空间没有引用2、对象没有实例化3、出现异常,实例化失败对象为null五、IIS扛不住的时候,也会出现上面的错误。当应用程序的用户访问量超过它能承受的范围之后,就会出错。改善你的程序,使用缓存,尽量减少与数据库交互的次数。六、我碰到的问题是,无意重置了DataSet引用,后出现这个问题,请大家好好查查自己的代码,是不是在其他地方重新

8、引用了,在我的程序中DataSet被设置成全局对象。七、当你发现所有的方法不行时,打上.netframework的补丁八、我出现这个错误,仅仅因为网站里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象但也浪费了一下午的时间在调代码上九、为每个可疑的地方添加监视,起初以为是sql语句写错了,查了几遍,换用sql语句还是报同样的错误。根据google出来的结果,提到对象重定义会引起这样的结果。根据这一提示,替换掉页面级全局对象,总算搞定了。classDBOper/*构造函数没有函数体*c#写的一系列对数据库操作方法*最初为了省事,尽量少声明对象,只在全局声明了一个privateDBOp

9、erdb=newDBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内存浪费。后来代码重构,在编译的时候并未报错。但是当运行的时候,就出现NullReferenceException:未将对象引用设置到对象的实例。结果就因它而搞了几个小时。后来根据google的结果,将不同方法中使用到的DBOper对象一一重定义为局部变量(一个方法里面只定义一个DBOper对象,多次调用其方法均正常),去掉全局的private变量。再运行的时候就正常了。至于为什么将自定义的对象提成为class为private在不同的方法里面使用后而出现这样的问题,现在还不是很清楚.编辑提醒:请注意查看“未将

10、对象引用设置到对象的实例”一文是否有分页内容。原文地址更多相关文章上一篇:sumif函数的使用方法 下一篇:汉字的演变过程表 注:未将对象引用设置到对象的实例一文由百分网免费提供,来源于网络。本文著作权归原作者所有,请在转载引用时保留。否则因未将对象引用设置到对象的实例一文引起的法律纠纷请自负,2011-10-21。周末浅说-未将对象引用设置到对象的实例(System.NullReferenceException)System.NullReferenceException:未将对象引用设置到对象的实例,这是一个新鸟,中鸟,老鸟都避不开的错误。下面基础的解释一下这错误:1:本质上的错误:obje

11、cta;/a是Null对象protectedvoidPage_Load(objectsender,EventArgse)a.ToString();/调用一个Null对象的方法当然啦!结果就如下图了:这么赤裸裸的写出这种代码,不太容易,通常更倾向于下面一种:2:通常性的错误:示例1:一个过滤某些字符的函数:publicstaticstringFilterValue(stringvalue)stringfilterChar=newstring,=,;,-;for(inti=0;ifilterChar.Length;i+)value=value.Replace(filterChari,);retur

12、nvalue.Trim();这个函数比如容易看的出:如果value传进来为Null的时候,就等于Null.Replace被调用,就出现了上面的错误。因此,通常的,在函数的首行,都会对value进行:if(!string.IsNullOrEmpty(value) 一下。示例2:再举一下通用性的调用错误,绑定,Eval(字段) ,这个方法比较常见,某些情况要转字符串比较,这里示例一下:当Eval(字段)为Null时,一个Null.ToString(),必然也会出现上面的错误,那什么情况出现?1:字段的值为Null2:空数据行,就是你表一行数据都没有,全是Null。所以预防性的写法是:%#Conve

13、rt.ToString(Eval(字段)=1?Yes:No%好了,看到本文的不管懂的还是不懂的,现在都应该懂了,如果你非要说你不懂,我得赞扬你智商高,下面有智商介绍,别放过。见到这异常:就是一个Null的对象调用了方法(属性或其它成员)变成Null.XXX引发的。当然啦,出现这种异常的场景,那可是万万千,数也数不完,但本质是一样的。个人观点认为,在三只鸟中发生此错误的原因各不同,基本如下:新鸟:不知道这个错误,或见这错误的次数太少,所以代码基本防都不防,模仿式,大量的函数都潜伏这种错误杀手。个人猜测:新鸟写的代码,都不加判断的原因可能:其一:是他们不知这种情况,刚学习,经验不足,未有处理这种异

14、常的经验。其二:推测是他们高调的认为:多一个Null的判断,会使得性能下降,他们追求高性能,因此,基本上,不加。中鸟:知道这个错误,只是考虑的不多,心不够细,人不够稳,写代码基本会加,但普遍不加。中鸟比新鸟吃的虫,肯定多,所以出现这种情况,原因当然不一样了啦。个人猜测:中鸟写的代码,出现Null引用的原因可能是:其一:没有养成思维习惯,在加班的压力下,写个函数都是刷刷的就出来了,偶尔会加,普遍不加,加还是不加,等错误出来了再加。其二:中鸟这时期处于高性能研发性时期,最喜欢的和别人讨论性能问题,特别是当for的次数达到百万级别时,当性能从0.03秒下降到0.01秒时,会为整整提高3倍的性能而欢乎

15、,并认为这是一个重量级的发现,然后推荐推荐给后来者,并BS一些不这么写的新手或同级的鸟。同理:一个函数加一个null判断,得上升到百万次的调用级别的高度考虑,如果这判断被调用百万次,那性能不是大大的损失?如果加2个判断,那就是2*百万次的调用,那就是相当大的性能损失,这怎么可以接受的呢?所以,能不加就不加,加不加,等错误出来了再加。其三:太懒了,这个本人是这么理解的说:大伙都知道,中鸟写代码,基本都属于面向对象型的了,那就是天天和对象搞在一块的了,每个对象都要搞来搞去,再多的精也伤不起!好吧,一个函数传一个参数,给你加一个判断,代码也不多,不算大括号就两行。可是中鸟基本上写的函数的参数,偏偏三

16、四五六七八九十个,这下让人纠结了:加吧,一想,工作量太大了,而且这性能感觉不高;不加吧,好像也没什么问题,这么一想啊,眼前阔然开朗,好,加不加,错误出来了再加。还有的,不仅是参数的判断要折腾,函数内部产生的对象,也要搞一搞,太多对象要考虑。光靠精力与考虑,加点人之常情,所以大多数情况是发生在:加不加,错误出来了再加!老鸟:对这错误太熟悉,心也够细,写代码潜意识会主动加防,但百密一疏,该来的还是会来,躲过初一,躲不过十五。老鸟吃的虫就更多了,而且老鸟们身经百战之后,觉得系统稳定,才是幸福。个人猜测:老鸟写的代码,出现Null引用的原因可能是:其一:代码写多了,基本上都靠潜意识反应,就是说潜能发挥

17、了,再白点就是习惯性思维。所以基本上都不会怎么犯这错误,但是光靠潜意识,基本都能挡住,基本之外的,还得靠正常思维。老鸟通常精力不太好,偶尔会走神,一走神,就漏了一个,再一走神,又漏了一个,再一走神,被神招唤了,太平间多了一位客人。所以我写代码,尽量不走神,免的被招唤,但偶尔也会漏。其二:是假老鸟,老鸟是装的,其实还是中鸟,硬要装,不过会装,说明智商高。社会的法则表明,生存的越好的,装的程度越高,越会装,生活就越好,装到最高境界,那就是装孙子。孙子是一名历史人物:会三十六计,装孙子的说明智商真的很高,没里绝对没有鄙视之意,因为三十六计有时候我也在学,只是智商一直上不去,所以境界一直上不去。下面再

18、补充一下,个人对中老鸟的看法,以下观点仅为作者扮演的个人的臆测观点,和作者本人无关:中鸟何以追求性能?臆测:因为他们通常只接触到系统的一部分,缺少整个系统体系的了解,所以他们希望在他们负责的那一个区域里,写出性能至上的代码,这能说有错吗?没错,而且理论上就应该这么干!但是,稳定不足,如果能写出又稳定又高性能的代码,有多好呢!重点还是讲老鸟:老鸟何以不太关注性能,而求稳定?其实,老鸟并不是不关注性能,而是他关注的是:一:稳定,这个很重要:因为系统一上线:首先:得对老板负责啊,你说是不是?然后:如果这个产品是要给客户演示的,那得对客户负责啊,你说是不是?再者:如果这个产品要上线运营,那得对访客负责

19、啊,你说是不是?所以,不管你系统怎么样,首先,保证稳定,至少给老板或客户或访客演示或操作的时候,你不能出错,至于慢点不慢点,那个好商量,好商量。二:整体性能大于局部性能I:这个就很明显了,你一个算法写的很好,可是其它选手数据库写的差,一访问,很慢,这怎么说的过去。II:所以要保证整体访问性能差不多先,然后再进行局部优化,这多符合中国人当前的优化思维啊。III:再说了,每个人局部性能都最大化了,一访问,还是慢,找不到着优化的地方,这可是要出事的:老板得出血买硬件了。IV:还有,整体上加了缓存+静态化html后,你会发现,局域的最大优化代码,基本都派不上用场了,因为直接就是访问+返回,至于您那最大

20、化性能的逻辑代码,那是千年走一回了。当然了,个人对此观点是很负责的,绝对没有任何轻视局部性能最大化的意思,相反还得鼓励大伙局部性能最大化,努力写出最优代码:一来:这是每个码农往上走必经的阶段,跳过不是件好事。二来:多让老板出下血,可以平衡下员工不满的心情:你让我加班,我就让你出血,多好呢。重大说明:本篇文章绝大多数观点为作者扮演的个人的臆测观点,和本人无关,本人认为,以上观点有些片面,可能与客观事实不符。请各位看客看在周末的份上,少一份偏激,多一份激动,开X吧!本视频到此为止,欢迎收看,下次再会,谢谢!PS:最近顺路折腾了下 CYQ.Data V4.5离线帮助文档,很快发布,敬请关注。版权声明

21、:本文原创发表于 博客园,作者为 路过秋天,博客 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。标签: 未将对象引用设置到对象的实例, System.NullReferenceException绿色通道:好文要顶关注我收藏该文与我联系 posted on 2011-07-24 17:57 路过秋天 阅读(8444) 评论(72) 编辑 收藏发表评论回复引用查看 #1楼 2011-07-24 18:00 | h_j_l 没错,我就是1L回复引用查看 #2楼 2011-07-24 18:17 | 风行小子 老鸟通常精力不太好,

22、偶尔会走神,一走神,就漏了一个,再一走神,又漏了一个,再一走神,被神招唤了,太平间多了一位客人。.回复引用查看 #3楼 2011-07-24 18:21 | 刘江北 呵呵,周末还在努力跟大家分享经验这份心情就已经很难得了,作为新鸟的我们值得学习。回复引用查看 #4楼 2011-07-24 18:21 | Juvy 记得我也曾经关注过性能,结果我老板说你说挂住的性能我用多一根内存条可以基本上解决!我XX,那好吧,我就不浪费那么多精在性能上了。其实老板说的也是有道理的,总是纠结于到底用for还是foreach,string还是stringbuilder,因百万次操作带来的0.001秒的性能优化而欢

23、呼,还不如多花一些精在从实际业务到代码逻辑的的整体可行性。我的观点也并不是反对局部性能,借用一下秋天的话:“当然了,个人对此观点是很负责的,绝对没有任何轻视局部性能最大化的意思,相反还得鼓励大伙局部性能最大化,努力写出最优代码”回复引用查看 #5楼 2011-07-24 18:24 | Juvy 还加一句:在用AA.BB的时候,一定要确保AA!=null然后在AA.BB,如果你不能肯定AA是否一定不为null,那就尽量多加一句if(AA=null).吧,因为就算加上几百个if(XXX=null)也不会有太多的性能损失,。回复引用查看 #6楼楼主 2011-07-24 18:26 | 路过秋天

24、引用h_j_l:没错,我就是1L你的情商很高,赞一个!回复引用查看 #7楼 2011-07-24 18:27 | Juvy 感觉博客园首页没有几篇好点的文章,要么就算垃圾,要么就算滥竽充数,要么就算完全看不懂,但是感觉秋天发的文章,基本上都很对给力,希望秋天多发一些文章。回复引用查看 #8楼楼主 2011-07-24 18:27 | 路过秋天 引用风行小子:老鸟通常精力不太好,偶尔会走神,一走神,就漏了一个,再一走神,又漏了一个,再一走神,被神招唤了,太平间多了一位客人。.看的角度很犀利,赞一个!回复引用查看 #9楼 2011-07-24 18:30 | wenthink +1回复引用查看 #

25、10楼楼主 2011-07-24 18:42 | 路过秋天 引用刘江北:呵呵,周末还在努力跟大家分享经验这份心情就已经很难得了,作为新鸟的我们值得学习。周末了还看贴,关键是回贴了,这让广大的写文作者感到很欣慰,这回贴的行为,相当值得我们学习!回复引用查看 #11楼楼主 2011-07-24 18:48 | 路过秋天 Juvy由于你回贴太多了,所以我也给你回复多点文字:1:首先感谢你的支持!2:再次感谢你的支持!3:你的留言也很犀利,可以将回帖的激情,转到成文章,你可以给大众一点力。4:千万不要怕文章写出来会误导新手,因为你写出来了,一定是有自己的思维思考的总结在里面,人在经过思考的过程之后,灵

26、力就上升了,这时候基本就成了奥特曼,又何惧怪兽来入侵呢。回复引用查看 #12楼 2011-07-24 18:54 | dotNetDR_ ? 操作符回复引用查看 #13楼 2011-07-24 19:03 | KevinQiangK 谢谢秋天大哥的分享:)回复引用查看 #14楼 2011-07-24 19:29 | 会动的稻草人 这个问题,确实挺“经典”的,看你这文章,受益匪浅啊。回复引用查看 #15楼 2011-07-24 19:35 | 不若相忘于江湖 秋哥,你的写作能力不错。通俗易懂。回复引用查看 #16楼 2011-07-24 19:52 | 海南.胡勇 很到位。回复引用查看 #17楼

27、楼主 2011-07-24 20:13 | 路过秋天 wenthink:) 谢谢支持,欢迎常来哟。回复引用查看 #18楼楼主 2011-07-24 20:15 | 路过秋天 引用dotNetDR_:? 操作符你的眼睛很犀利,看到了?操作符。我看了几眼,咋还是发现是?:呢?回复引用查看 #19楼楼主 2011-07-24 20:15 | 路过秋天 KevinQiangK也感谢你的留言!回复引用查看 #20楼楼主 2011-07-24 20:16 | 路过秋天 引用会动的稻草人:这个问题,确实挺“经典”的,看你这文章,受益匪浅啊。我发现“推荐”数字没增加,我大意上测试:你一定还有保留的不便发表的意

28、见。回复引用查看 #21楼 2011-07-24 20:17 | dotNetDR_ 路过秋天sorry!你我觉得你应该在文里面提及一下 ? 操作符回复引用查看 #22楼 2011-07-24 20:19 | dotNetDR_ 路过秋天另外非常赞同你对老鸟并不是不关注性能,而是他关注的是:一:稳定,这个很重要:这一说法回复引用查看 #23楼楼主 2011-07-24 20:22 | 路过秋天 引用不若相忘于江湖:秋哥,你的写作能力不错。通俗易懂。你的回复很直白,也很通俗易懂,哈哈。回复引用查看 #24楼楼主 2011-07-24 20:22 | 路过秋天 海南.胡勇你的留言也相当到位。回复引

29、用查看 #25楼楼主 2011-07-24 20:31 | 路过秋天 dotNetDR_谢谢支持,这个?操作符,2010的新语法,我没怎么学,具体还看msdn。回复引用查看 #26楼 2011-07-24 20:37 | dotNetDR_ 刚找到的C# 2.0的地址并不是VS2010新语法回复引用查看 #27楼楼主 2011-07-24 20:50 | 路过秋天 dotNetDR_的确是2.0就有的,纠结的我,这么多年竟然都没用过,纠结。回复引用查看 #28楼 2011-07-24 21:46 | mrfangzheng 尽量不要加NULL检查!1.检查了就掩盖了本质错误.很多情况下, 变量

30、不应该为null, 而实际运行为null, 就应该检查原因到底出在哪里, 而不是简单的加个!=null回避2.太多null检查影响可读性回复引用查看 #29楼 2011-07-24 22:27 | C#.NET通用权限管理系统组件 顶一下。金融行业招聘.NET中高级开发人员好工作向朋友门分享工作地点北京知春路地铁站附近年薪10-20万,招聘C#.NET欢迎大家转发一下回复引用查看 #30楼 2011-07-24 22:57 | wuxiaodong 顶一下支持秋天大哥回复引用查看 #31楼楼主 2011-07-24 23:19 | 路过秋天 引用mrfangzheng:尽量不要加NULL检查!

31、1.检查了就掩盖了本质错误.很多情况下, 变量不应该为null, 而实际运行为null, 就应该检查原因到底出在哪里, 而不是简单的加个!=null回避2.太多null检查影响可读性出现反方观点:让异常抛的更猛烈些吧!回复引用查看 #32楼楼主 2011-07-24 23:20 | 路过秋天 C#.NET通用权限管理系统组件招聘贴dudu会建议你发到招聘频道,哈哈。回复引用查看 #33楼楼主 2011-07-24 23:20 | 路过秋天 wuxiaodong:) 谢谢支持哟!回复引用查看 #34楼 2011-07-25 07:55 | 小彬 再写一种情况:在多线程中,对一个数组(包括Arra

32、yList, List等非线程安排的)访问if(o!=null)arr.Add(o);但是在foreach/for时,仍然存在null值回复引用查看 #35楼 2011-07-25 08:30 | Virus-BeautyCode 检查还是应该检查的,但是如果为null,一概跑出来自定义的异常,或者是抛出arguenullexception的异常。在系统中不检查,产品上线你就等着死吧。统一捕获,统一处理,然后根据日志或者是异常日志,查找问题,解决问题。回复引用查看 #36楼 2011-07-25 08:30 | 大石头 秋天:+Eval(xxx)=xxx回复引用查看 #37楼 2011-07-

33、25 08:57 | mrfangzheng Virus-BeautyCode自定义异常和null异常又有什么区别呢? 同意要统一捕获, 统一处理.回复引用查看 #38楼 2011-07-25 09:27 | 会动的稻草人 路过秋天哈哈,你太多想了,说句实话,进园子后,我还从没点过那按钮,基本上是点收藏回复引用查看 #39楼 2011-07-25 09:42 | helloworld2 service中传进来的参数是null直接抛异常不解释回复引用查看 #40楼楼主 2011-07-25 10:00 | 路过秋天 引用小彬:再写一种情况:在多线程中,对一个数组(包括ArrayList, Lis

34、t等非线程安排的)访问if(o!=null)arr.Add(o);但是在foreach/for时,仍然存在null值这个深有体会,在秋色园内置的线程中,曾经遇到过两次,当然现在没有了,处理了。情况基本是这样的:1:代码中,就是像你这样有判断的,而且从代码认为肯定已经是做不到十足的判断,不用加try catch。2:在系统日志中竟然看到Null引用的异常,回头检查代码竟然找不到。3:猜测是升级dll交替时,这时候很起怪,还是一个进程,但产生了多个内置线程,这时等于多个线程同时操作集合,一个在删除,一个在更新引起的。4:后来把这交替间产生多线程的问题给处理后,这问题也消失了。回复引用查看 #41楼

35、楼主 2011-07-25 10:04 | 路过秋天 引用Virus-BeautyCode:检查还是应该检查的,但是如果为null,一概跑出来自定义的异常,或者是抛出arguenullexception的异常。在系统中不检查,产品上线你就等着死吧。统一捕获,统一处理,然后根据日志或者是异常日志,查找问题,解决问题。异常是要处理的,而且传说抛异常是很伤性能的,一个判断能避开异常,节省一条日志,该处理时就处理。回复引用查看 #42楼楼主 2011-07-25 10:05 | 路过秋天 引用大石头:秋天:+Eval(xxx)=xxx为啥这么多年了,我就没发现这种简单的写法呢,大石头,你应该写篇简单法

36、则应用30例。回复引用查看 #43楼 2011-07-25 10:14 | testzhangsan 引用大石头:秋天:+Eval(xxx)=xxx是否每个 都应该替换为 String.Empty 呢?不知道是否下面的写法性能更好一点?String.Empty + Eval(XXX) = xxx回复引用查看 #44楼 2011-07-25 10:15 | eflay 人家只是想通过异常统一处理。回复引用查看 #45楼 2011-07-25 10:16 | eflay 路过秋天C#的异常处理机制从运行就开始了,整个程序都在try中,传说可以肆无忌惮的使用。所以要看程序的逻辑,如果字符窜为空了导致

37、上层某方法肯定是无法正确执行的,那也许就应该抛出异常抛到此方法外面直接终止方法。而C+的异常处理是有消耗的,所以通常都是返回false然后这个返回值要中止方法直接再return回复引用查看 #46楼楼主 2011-07-25 10:24 | 路过秋天 eflay我听的传说是try catch时,是有消耗的,当然我只是听传说,从感知上,我们都能体会到,抛异常的时候,的确是卡住一下下。回复引用查看 #47楼楼主 2011-07-25 10:26 | 路过秋天 会动的稻草人good boy!回复引用查看 #48楼楼主 2011-07-25 10:27 | 路过秋天 引用helloworld2:ser

38、vice中传进来的参数是null直接抛异常不解释service的定义太广,我也不好回复。回复引用查看 #49楼 2011-07-25 10:27 | eflay 路过秋天那你写个测试程序试试。然后就有新博文了。回复引用查看 #50楼楼主 2011-07-25 11:08 | 路过秋天 jaka1280你路过就路地了,还带两网址。你带两网址就算了,也不顺路介绍一下都是什么网址。你这样做广告,不行的。回复引用查看 #51楼 2011-07-25 11:15 | 菜鸟老了 在数据源里面定义数据源的返回类型,null伤不起,new T()又太多新实例了。回复引用查看 #52楼 2011-07-25 1

39、1:27 | eflay 路过秋天测了下,try catch 本身几乎没有任何消耗,但是throw new要新建异常类实体是最大的消耗,循环10000次1000多毫秒,而普通2毫秒的差距,定义一个静态异常类的话就还是2毫秒。回复引用查看 #53楼楼主 2011-07-25 11:40 | 路过秋天 eflay看来你可以得一篇新文章了。回复引用查看 #54楼楼主 2011-07-25 11:41 | 路过秋天 引用菜鸟老了:在数据源里面定义数据源的返回类型,null伤不起,new T()又太多新实例了。纠结,看不懂你要表达的意思。回复引用查看 #55楼 2011-07-25 11:45 | ef

40、lay 路过秋天结论就是,基本还是可以肆无忌惮用的,o(_)o回复引用查看 #56楼楼主 2011-07-25 12:24 | 路过秋天 eflay我必须很严肃的告诉你,try catch你可以加或不加,但异常不能乱抛,因为那是相当消耗时间的。回复引用查看 #57楼楼主 2011-07-25 12:27 | 路过秋天 eflay再给你补充一下,我不知你是怎么测试,我测试的结果是,抛1万次异常不是1000毫秒,而是18689毫秒,这是很可怕的数字。回复引用查看 #58楼 2011-07-25 12:37 | 大石头 引用路过秋天:引用大石头:秋天:+Eval(xxx)=xxx为啥这么多年了,我就

41、没发现这种简单的写法呢,大石头,你应该写篇简单法则应用30例。这个很多年前,做ASP的时候,我们经常这么干。类似的还有0+Rs(ParentID)等。因为js和vbs是弱类型,我们经常因为类型问题搞得焦头烂额,然后这种方法可以使得它有一个明确的类型。这就好比我们在sql里面用 1=1 And,11 Or回复引用查看 #59楼 2011-07-25 12:37 | 大石头 引用testzhangsan:引用大石头:秋天:+Eval(xxx)=xxx是否每个 都应该替换为 String.Empty 呢?不知道是否下面的写法性能更好一点?String.Empty + Eval(XXX) = xxxS

42、tring.Empty就是一样回复引用查看 #60楼 2011-07-25 12:38 | 大石头 引用菜鸟老了:在数据源里面定义数据源的返回类型,null伤不起,new T()又太多新实例了。异常吧,异常是比较规范的回复引用查看 #61楼 2011-07-25 12:39 | 大石头 秋天实际上,我们做过的那么多项目,都是不对了就抛出异常,当然某些方法也有不抛异常的重载,一般是Tryxxx。然后UI层(页面)需要处理异常的,就捕获处理。最后,Application有个全局的Error处理。大概就这样!回复引用查看 #62楼楼主 2011-07-25 14:12 | 路过秋天 大石头正在准备下

43、一篇博文中,哈哈!回复引用查看 #63楼 2011-07-25 16:09 | 菜鸟老了 引用大石头:引用菜鸟老了:在数据源里面定义数据源的返回类型,null伤不起,new T()又太多新实例了。异常吧,异常是比较规范的这样不好吧,返回值为null的可能是由于多种原因造成的,就像 FilterValue(string value)那么就要看FilterValue是怎么定义的规则,如果说在定义中value不能为null,那么当传入值为null的时候抛出异常,如果value在双方的协议中可以为null,那么当传入值为null的时候,需要在FilterValue里面进行对null的处理,而这个时候抛

44、出异常显然不应该是我们所要的。回复引用查看 #64楼 2011-07-25 16:14 | 菜鸟老了 例如下面两种定义,我的理解对于null的处理方式应该是不一样的:/ / 过滤字符串/ / 需要过滤的对象/ 当传入的值为null时,抛出NullRefrenceException/ 过滤后的对象public static string FilterValue(string value)if (value = null)throw new NullReferenceException();return string.Empty;/ / 过滤字符串/ / 需要过滤的对象 / 过滤后的对象,如果传入

45、为null,返回String.Emptypublic static string FilterValue(string value)if (value = null)return string.Empty;return string.Empty;回复引用查看 #65楼楼主 2011-07-25 16:14 | 路过秋天 菜鸟老了这个双方协议表达的好:补充:很多情况,我们可能私下假设出有不能传null,然后某天了,发现这方法还可以给更多的情况调用,于就是调了,这时候不留神的,就出事了。回复引用查看 #66楼 2011-07-25 16:17 | 菜鸟老了 引用路过秋天:菜鸟老了这个双方协议表达的

46、好:补充:很多情况,我们可能私下假设出有不能传null,然后某天了,发现这方法还可以给更多的情况调用,于就是调了,这时候不留神的,就出事了。所以尽可能的在方法的定义里面把对于一些特殊情况的处理方式定义好,以免返回意外的值,记得在WCF服务编程上看过,不要把错误当异常。回复引用查看 #67楼 2011-07-25 16:23 | 大石头 引用菜鸟老了:引用大石头:引用菜鸟老了:在数据源里面定义数据源的返回类型,null伤不起,new T()又太多新实例了。异常吧,异常是比较规范的这样不好吧,返回值为null的可能是由于多种原因造成的,就像 FilterValue(string value)那么就

47、要看FilterValue是怎么定义的规则,如果说在定义中value不能为null,那么当传入值为null的时候抛出异常,如果value在双方的协议中可以为null,那么当传入值为null的时候,需要在FilterValue里面进行对null的处理,而这个时候抛出异常显然.你可以抛出不同的异常呀回复引用查看 #68楼 2011-07-26 09:23 | da胖小子 挺棒,楼主都想到人家的心里了。分析的却是很彻底回复引用查看 #69楼 2011-07-26 17:59 | Max蚊子 新鸟知道了,3Q回复引用查看 #70楼 2011-07-29 00:14 | 思念死水微澜 估计你一定是壹周立

48、波秀的忠实粉丝吧 哈哈哈 话语都模仿回复引用查看 #71楼楼主 2011-07-29 01:04 | 路过秋天 引用思念死水微澜:估计你一定是壹周立波秀的忠实粉丝吧 哈哈哈 话语都模仿哈哈,知音人,不过不是忠实的,之前看了一下视频,就学了两句,哈哈。回复引用查看 #72楼 2011-07-29 10:15 | 思念死水微澜 呵呵 学一下他的语言幽默是十分有必要的我看了你的几篇文章 觉得写的很好哦,都给顶起来了,我是一个刚入门的C#程序员,以后还得多向您学习呢 呵呵 遇到高手的感觉真好哦 (*_*) 嘻嘻string id=Request.QueryString id .Trim(); stri

49、ng Sqlstr = select * from adminas where ID= +id+ ; 我在连接里面传了一id值如果为空的时间就出现这样的错误 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 有什么办法解决 对我有用0 丢个板砖0 引用 举报 管理 TOP回复次数:17 zhangjingcheng (ASP,NET爱好者) 等级:#1楼 得分:0回复于:2007-07-09 14:26:06怎么就没人呢? 自己顶 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:小问MVC模式 baoker (初入社会) 等

50、级:#2楼 得分:1回复于:2007-07-09 14:31:21为空肯定会出现那样的问题 可以判断有没有传值 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:数据库类的扩展:数据库的建立和表的建立 zhangjingcheng (ASP,NET爱好者) 等级:#3楼 得分:0回复于:2007-07-09 14:34:00怎么判断我用if判断了不行哦! 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:攒分贴用c#读取并分析sql2005日志 baoker (初入社会) 等级:#4楼 得分:2回复于:2007-07-09 14:35:491. if (Request.Quer

51、yString.Count 0) string Sqlstr = select * from adminas where ID= +id+ ; /处理语句 else /处理语句 这里我是直接把ID写死 2. if(id=null) id=1 else string Sqlstr = select * from adminas where ID= +id+ ; /处理语句 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:请问如何在代码中实现SQL中的触发器 baoker (初入社会) 等级:#5楼 得分:1回复于:2007-07-09 14:36:282. if(id=null) /这

52、里少写一个等号 id=1 else string Sqlstr = select * from adminas where ID= +id+ ; /处理语句 对我有用0 丢个板砖0 引用 举报 管理 TOP精华推荐:攒分贴每日小知识-sql获取第n行 zhangjingcheng (ASP,NET爱好者) 等级:#6楼 得分:0回复于:2007-07-09 14:39:11string id=Request.QueryString id .Trim(); if(id=null) id= 1 ; else id= Request.QueryString id .Trim(); 对我有用0 丢个板砖0 引用 举报 管理 TOP zhangjingcheng (ASP,NET爱好者) 等级:#7楼 得分:0回复于:2007-07-09 14:39:33异常详细信息:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!