日期:2014-05-20  浏览次数:20669 次

为什么很多人喜欢在C#中用out和ref?
特别是在输出错误信息时,一般来说,不管是否是可预见的错误,毕竟都比正常流程要少的多,弄个ref,out,搞得每次都要传递这个参数,大多数是空的,为何不用抛出异常,我很费解?谁能解释下?

------解决方案--------------------
这是个人习惯,尤其是一起使用ado.net比较多的人

ado.net采用int做返回参数,-1自然表示有误,但错误是啥并没有明说

自然如果喜欢采用这种api规定做设计的人,在处理这套东西的时候,他就比较郁闷,所以他就只好自己在临时弄一个ref

ps:这一般都是临时加上去的,一般ref参数都在末尾是吧,why?因为大多数情况是开始就没考虑到,后来需要了临时加上了。如果你开始想到了,又何必如此呢??

比如ado还有lasterror可以查。如果开始就想到了你也一样可以,事先就在对象里放lasterror属性
------解决方案--------------------
得看看代码的都是什么人。如果像微软那样设计给所有人用的类库,那么就不能假定程序员有对指针、out、ref这样的按引用传递的理解,所以要避免。如果目标是中高级程序员,那么就不需要有这方面的顾虑。
------解决方案--------------------
探讨

传统的c环境最差劲的,就是其调试环境。于是就产生了这类东西,用返回值来表示是否异常。

------解决方案--------------------

只要:

1. 我的接口设计合理,没有增加不必要的耦合;
2. 没有引入不必要的性能损耗;
3. 没有造成安全隐患;
4. 没有破坏程序的整体架构;
5. 没有增加代码阅读和理解的难度;


在这样的前提下,C#编程语言中任何一个合法的关键字都可以为我所用,谁能说这样不可以?

------解决方案--------------------
如果有人说,他这辈子写程序从来不需要在一个函数里返回多个值,那我也没话说;
如果有人说,需要返回多个值的时候他总是封装成一个类,哪怕就两个值也封成一个类,哪怕这多个返回值之间并没有什么直接联系,哪怕这封装的类其实不伦不类,那我也没话说;

编程语言当中哪些关键字要保留,哪些关键字要废弃,这可是大事情,一般都会有专门的技术委员会来商议这件事,而且委员会的成员各个都得是世界级的专家。某些人仅凭自己那点极其有限的编程经验,自己用不到就觉得别人也用不到,这不是一件很可笑的事情吗?

编程是一件顺理成章、水到渠成的事,代码写到那里,需要用到一个什么东西,自然而然就用了,只要不是滥用就行。就像人写文章一样,需要用什么字就用什么字。有的字你可能一辈子也没遇到,但是也许别人还要用,你能不能说既然你自己用不到那么字典里就该把这个字删除?

真不知道某些人的脑子是怎么长的,这么点事都想不明白?