re: 为什么程序必须得会C语言? Wu.Country@侠缘 2008-05-12 23:50
@蜀山雪狼
说的太远了,“兰董”是谁我不知道,我也没有藐视任何人或者任何程序设计语言。
我很长时间没有管理自己的博客了,勤能补拙!
到新的环境里已经有一段时间了,我该整理自己的一些东西了。
re: 博客园正在招聘 Wu.Country@侠缘 2008-05-02 08:57
怎么样也要支持一下!!!!!
博客园伴我走过了好几个春夏秋冬,从我开始学习了解.Net开始,一直到现在。
虽然我现在暂时不开发.Net的程序了,但我会一直关注.Net的发展,也会一直关注博客园!
re: Webb.WAVE项目开发体会与心得 Wu.Country@侠缘 2007-12-31 17:56
@mysoft
呵呵,我不得不回复你的问题。
1、分隔符是随机的,和GUID差不多,出现重复的可能性你自己去算,我就不多说了。而且HTTP协议上也说明了这个分隔符的用法,它本身就不绝对唯一。
2、你说的压缩我还没听说过。就算是压缩过,到达HTTP协议后,在我们的应用层上是决对和上传的数据是一样的。这一点可以肯定,我已经用这个组件上传了近好几千个文件,除了测试时文件有错外,正式的运行版本下,没有一个出现文件错误的。所以你说的压缩,如果存在的话,就是在下层协议上,到了我们使用的协议时,已经解压了。如果不存在的话,那就什么都没了。
还是谢谢你提出的问题。
@lapinroi
不会扁你的。
我只想说:
1、这是真实名字(英文名字),有理由不用吗?
2、在这里也不好直接把别人的中文全名写出来。
3、我也不记得全部人的中文名字。
@efon
呵呵,武汉的研究所不多!
顺路说一下,武汉在本月15号有个.Net俱乐部的活动,有兴趣的可以去看一下,这里是相关资料:
12月15日在光谷软件园C1栋101室阶梯报告厅(关山一路1号大彭村站)举办2008新技术激情碰撞大会。在会上,我们将详细介绍Microsoft Visual Studio 2008的新特性专题讲座。并且我们还会对一些新的技术进行演示,让您能够第一时间了解到微软的最新开发技术。我们诚心邀请您参加我们的活动。
日程安排:
时间
安 排
14:00-14:15
俱乐部负责人及相关人士致开幕词
14:15-15:00
Visual Studio 2008新特性总揽
15:00-16:00
WPF应用综述
16:00-16:20
茶歇
16:20-17:00
Silverlight构建超酷应用界面
17:00-17:20
自由讨论
时间:2007-12-15下午2点
地点:光谷软件园C1栋101室阶梯报告厅(关山一路1号大彭村站)
俱乐部负责人:林焰峰(MVP)
联系电话:(删除了,不知道人家让不让我公开,就删除吧,有想知道的,到俱乐部的网站上看看)
讲师:微软讲师
报名方式:
由于场地的限制,从现在开始至14日止接受报名,我们会给前50名报名并按时到场的会员预留座位。
报名方式:在本则blog下简要回复或详细回复邮件至 wuhan.net@live.com(请回复到此邮箱,今后活动将用此邮箱发送)
详细回复内容包括:
姓名:
职务:
电话/手机:
Email:
公司/公司地址:
关心的话题:
注意事项:
1. 为更方便的组织活动和进行交流,请参加活动的朋友带上名片。
2. 此次活动完全自愿免费。
3. 有关活动事宜请关注:
http://www.microsoft.com/china/msdn/events/featureevents/2007/passion2008.aspx
@Cruise
Thaks for your regards!
I don't want change a blog location.
But just less update will be taken at here.
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-12 11:30
@heys
升级是迟早的事。
序列化有它的好处,并不是所有的文件都可以用XML文件序列化的。二进制文件必然是会存在的。这只是在版本变化中的一个问题。
版本变化很快,给我们带来了很多问题。
这里的版本变化不仅仅是.Net平台版本的变化,还有第三方控件版本变化,自己程序的版本变化,自己的控件的版本变化,还有就是旧版本文件的升迁等一系列问题。
而我想表达就是这些版本变化与控制中,我们应该选择一个最优的解决方法。并不是盲目的都升级到最高版本就完事了。
也很感谢大家的一些评论,很有收获!
re: [导入]基于RTSP协议流媒体服务器的实现[转载] Wu.Country@侠缘 2007-09-11 09:43
我也汗一下!
呵呵,转的一文,感觉有用就放在这里了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-10 08:23
@曲滨*銘龘鶽
你的分辨率多大,我在1280*1024下很正常。
就是Log的左边有一点空白,但背景颜色也这空白并不冲突,所以我也就想要修改。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-08 09:46
Oh, My God!!!!!!!
这里没有讨论D版的问题!呵呵。。。。
而且我这里说的“买”,不仅仅是升级开发环境的问题,而是其后带来的一系列其它的升级问题。
我相信,把项目的源代码放到更高版本的开发环境上进行升级编译,95%的应该可以通过,剩下的也应该可以很快的解决。
然而,升级过后的问题:
1、你的程序已经序列化出来的文件怎么办?
2、安装包的管理也是个问题。
还有,还有更多的问题,就是新技术的学习与应用,简单的编译一下可能没有太多的意义,可能会要对产品在新的技术上进行一些优化。最后再就是新产品的培训。
这个“贵”与产品的规模不是成线性比,应该是成几何级数比的(我瞎说的,但,如果一个产品的规模是1,它的所有升级开销为1,那么当规模是2时,开销我可以肯定的说是大于2的,大家应该有同感,不知道有谁知道这个比的)。
OK,总之,升级带来的开销是不得不衡量一下的。因为频繁升级,给我们开发带来的开销还是很“贵”的。
所以,我觉得应该理智一点的对待升级问题。在大多数情况下,先选择必须的,然后再选择想要的!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 15:48
@appledou
@大石头
看了这些回复,有点想更新的冲动了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 15:01
@ocean
感谢!!!!!!
3.0是2.0的一个包含?这个我还真不知道!
也就是说,3.0里的一些DLL文件所使用的版本号和Public Key和2.0是一致的了?!如果是,那就是真正的包含关系,如果不是,那就还是一个郁闷的问题。
原谅我对后面几个版本不是很了解!我手头上的项目还不能让我使用最新的框架来开发。很郁闷,也很遗憾!
1.1最终会退出历史舞台是不可否认的事实,在这个过程中,确实一些东西让我觉得很郁闷也很为难!
@fxnet
用户可不这么认为!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 13:15
@金色海洋(jyk)
我也是这样想。
所以对2008的期待还是很高的!
但这只是开发环境问题。
升级后,我们的程序,以及目标机器上还是会有版本问题。
他们还不得不3个版本的.net都安装。
你为了兼容,还是不得不保留一些老版本的文件!
这就是我郁闷的问题。
@万恶的验证码
无所谓了,放哪都行。我很少在首页放随笔。
1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作)
除了高质量不好自己下定论以外,原创,经过认真思考并精心写作我觉得我至少是问心无愧的。呵呵,,!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:57
@vvjj
我错了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:56
@A.Z
是呀,所以我的感悟就是:只买对的,不选贵的!
其实我对2008还是很看好的,希望它不会让我太失望!
然而,面对这样的一个版本局面,还是很尴尬的。
不敢瞎升级!客户不明白的还问:“昨天我不是刚安装了.Net吗,今天怎还要安装,那我明天还要安装吗?”
呵呵,是哭还是笑?
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:50
同志们,我说的是我们自己的程序版本问题,以及.Net的版本问题,以及第三方控件的版本问题!版本控制与兼容问题,与哪个开发环境没有关系!
我用1.1开发的程序,在.net 2.0下不能运行,然而它却给我“完美”的安装上去了,最后运行时不得不加载两个同名但不同版本的程序集(呵呵,目前是两个,天知道以后会是多少个,以及还会有其它什么问题)。
VS.net用哪个开发环境都不是很要紧,其实我还更喜欢2003写C++程序。但问题是,你写出来的.net程序却面临着复杂的版本问题。这与你选择的开发环境没有关系。就像我说的例子:你用3.0开发,但不得不用一个2.0的控件(别人的你还没有得到3.0版本的,或者其它原因,你没办法得到),还有一个控件是1.1的,试问:这和你用哪个版本开发有关系吗?最后目标机器上不是3个都得安装吗?
这个问题仁者见仁,智者见智!和大家分享一下个人的感悟吧!
有同感的就支持一下,有不同意见的也欢迎讨论!
但不希望在一些不重要的细节上做过多的无谓的争论!先谢谢了!
如果有人遇到过我说的问题,而且有更好的解决办法的,十分欢迎讨论!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:10
请不要对我文中的一些无关紧要的版本号理解错误问题做追究。
是1.1还是1.0还是Beta版本不重要,重要的是我们要如何看待这些版本问题。
我也不想对那些过去的版本号错误问题来修改文章。
还有人要问这个问题,我先承认是我错了,我当然不知道1.1比1.0大一点点。我也不知道2002是正式版还是Beta版。
至于我写过的代码行数,也没有太大的意义。我只是想说明我遇到的是我在写代码中遇到的实际问题。只想让我说明的问题更有一些说明力。
不知道你们遇到过我在文章中说过的布署安装问题,运行DLL加载问题和序列化问题没有?
这些问题都是我还没有办法解决的问题。特别是后面两个问题,因为要兼容,要不冲突,带来的版本升级问题不是简单的删除一个DLL文件,取而代之是新文件。
而是要保持那结旧文件,而且要一直保持。
说的简单一点,安装了.Net2.0以后,不等于可以运行所有的.Net程序!
同样,终究会有一天,.net版本太多了(目前也不少了),为了运行大部份程序,不得不把1.1到XXX版本的框架都安装起来!
OK,就算你MS都自带吧,带这些版本文件也不是办法呀!最要命的是运行时也要把几个版本里同程序集名的DLL文件以不同版本的形式加载到内存!
天呀,就这一个问题,你们不觉得可怕吗????(除非版本唯一,或者永远KILL一些程序,而这都不是我们想要的。)
好了,我只是说一些我在开发中遇到的一些版本问题以及一些感悟!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 11:48
我想哭,也想笑!
看看我遇到的问题吧!
安装包给我检测的是2.0,但其实我是用1.0开发的,结果正确安装了但不能运行!这是谁的错??!!(我的安装Merge也是用1.1打的,它的依懒只是dotnetfxredist_x86.msm,标识ID是:mondo.E4183BB4_18A8_11D5_A549_0090278A1BB8)
这是MS自己做的,结果因为版本把它自己搞错了。
还有,运行一个程序,不得不得两个System.DLL加载,往后是不是要加载3呢?或者更多?真是哭笑不得。
我不得不保守一点,不敢瞎“买”东西。
最后MS的1.1,2.0,3.0都在住上飞,我的程序也得1.1,2.0的住上飞,而且老版本的文件不能删除,必须保留(要兼容,要不冲突)!
想想,如果再过几年,我的程序有10个版本了,.Net也有10个版本了,我也用第10个版本在开发了,却还得维护每个版本的DLL文件!
就算保守一些,删除一些,放弃一些用户,但面对这种局面是不是很尴尬呢?
还有,我不是买不起跑车,而没精力应付因为买了跑车后带来的其它问题。而且卖跑车的人不负责售后服务。
还有,这并不是一个用哪个不用哪个的问题,而是兼容的问题。
前面有人说到了,MS这是一种不负责任的表现!
re: 正确理解 C# 中的 ref 关键字 (续) Wu.Country@侠缘 2007-09-03 11:54
re: 我本将心向明月,奈何明月照沟渠。安装VS2008出错 Wu.Country@侠缘 2007-08-31 17:32
等2008年到了,我再试试2008吧!
呵呵。。。。。
re: 思考:如何让其他人愿意帮助自己? Wu.Country@侠缘 2007-08-31 17:31
想让别人怎样对你,你就必须先怎样对待别人。
在其它方面先帮助一下别人,别人就会帮助你了!
没必要添加计时器。
直接让线程Sleep一小会就行了。
我的闪屏就是这样做的。因为在窗口还在渐变的时候,是完全有理由不让用户进行任何操作的。
而且整个等待时间只有零点几秒,所以用户也不觉得什么。
个人看法。
re: 利用HttpModule做流量记录 画蛇添足最后一笔 Wu.Country@侠缘 2007-08-31 17:14
对了,最后还有个我觉得我做的比较重要的地方就是要使用异步统计,当一个统计请求来了以后,把数据立即排队,然后立即返回。统计系统再对排队的源数据进行处理。而返回的统计请求就不会影响页面的响应时间。如果等统计系统完成了统计,那页面访问用户也不好受。
根据我的经验,直接排队数据然后返回,先不做任何处理是最好的,其它任何在统计系统上要时间开销的方法都不好。因为不知道有多少人同时请求,就算只处理0.001秒,1万次/秒的请求也会让用户等上10秒。所以,统计响应时间最好是趋向0。
还有就是如果要统计搜索引擎与关键字的话,要注意字符集,这是个小问题,就不多说了。
re: 利用HttpModule做流量记录 画蛇添足最后一笔 Wu.Country@侠缘 2007-08-31 17:02
偶然看到,就说说我的看法吧。
大概半年前我就利用HttpModule做了一个流量统计的应用程序,而且是为统计服务器做的。最后因为服务负担过重(总计每秒1万以上的请求),失败了。
最后我总结了一下经验教训,觉得用HttpModule应该是可以做浏览统计的,但必须处理以下几个问题,主要是在算法上,决不是技术上。
1、必须独立统计与数据库访问。
如果想来访一个就写一次数据库,那就只有一个字:“死”,你的服器必死无疑。因此,必须重新开线程或者服务来专门写数据库。
2、必须预先处理数据再写数据库。
上面的方法是必要的,但在写数据库的时候,不能有多少写多少,必须先在内存里进行一些处理(这就是我说的很重要的地方:算法),然后再直接把结果写入数据库。例如:从一个IP得到用户来访地区,以及是否是搜索引擎上来的,以及搜索关键字是什么等等,如果每次都查询数据库再来写数据库,那也是个死。必须做一个预处理,最后直接写统计结果。
3、必须做缓存。
这一点就不用说了,所有的统计系统都有缓存,一般是缓存IP,但我觉得还应该缓存搜索引擎等。缓存分两种,一种是时间缓存,就是每长时间清一次缓存。另一种就是分量写缓存,当数据量到一定时,就清缓存。我是两个结合来用的,当IP超过3000或者时间超过30秒,就写一次数据库。
4、数据库日志要注意,这就不说了。
5、不要在数据库里临时表。这一点我不好说,但这个临时表确实让我郁闷了好久,本想用临时表来处理一些数据处理,结果带来了严重的负作用,大量的时间耗在了数据库的查询上。最后在内存里做个固定大小的类似临时表使用的临时空间来处理,效果好多了。
6、最后我觉得非常重要的就是统计算法,它有很大的优化的地方。我先后做过四五次优化,每次在性能上都有明显的提高。因此我觉得,统计算法才是核心,如果统计算法处理的好,其它的负担都可以相对减少很多。
个人想法。
re: Effective C# 原则43:请勿滥用反射(译) Wu.Country@侠缘 2007-08-20 09:20
VS.Net 2003 自带的CSC编译器,版本为7.10.3052.4
.Net版本为1.1.4322
确实可以通过编译,我试过。
注意名字空间的引用。
re: 有兴趣的执行一下这段代码 Wu.Country@侠缘 2007-08-16 22:38
龙堂,CoolStar,
多么值得回忆的地方呀!可惜记得的人不多,印象比较深的有Desk兄,小丫头,还有几个有映象的,但记不得名字了。
我很少用MSN或者QQ之类的聊天工具,不过今天决定重新开启我的MSN帐号了,不知道还记不记得密码,呵呵。。。。。。
re: Craig离开Webb了 Wu.Country@侠缘 2007-08-08 17:13
他没详细说,但我们还保持着联系。Michael应该知道。
re: 一直在努力 Wu.Country@侠缘 2007-07-30 08:47
当然可以,注明引用来源就行了。
re: 最近很少买与计算机相关的书了 Wu.Country@侠缘 2007-07-27 13:25
@丫丫
天哪,你在哪里,偶生病了,我叫你呢,你听到没!!????
(好了,我也叫的天响了!)
re: 我在犹豫是不是该收集这几首MP3 Wu.Country@侠缘 2007-07-27 13:21
丫丫,楼上的是谁,你不会不知道吧?!!
re: 最近很少买与计算机相关的书了 Wu.Country@侠缘 2007-07-18 08:25
谢谢两位的关心!!!
感动哦!!!
呵呵。。。。。。。
re: 最近很少买与计算机相关的书了 Wu.Country@侠缘 2007-07-18 08:25
@丫丫
忘了告诉你了,我打针的事我妈不知道,关心什么呀!!!
@上传文件名相同覆盖问题
重名机率很小,而且你可以在上传文件后用SaveAs把文件重新另存一份。这样,在短时间内还有重名的机率在理论上为0。
@linker
我没有在2005上调用过,但控件在ASP.net 2.0下运行正常。
所有在2005上调用的朋友们请注意,我暂时并没有打算在2005上调试本组件的想法,请大家自己学习解决遇到的问题。而且目前我的项目在WinForm上,暂时与WebForm没太大关系,所以也就没有维护这个控件了。对此很报谦!
re: 小有难度的一题,想了好久也没有解决! Wu.Country@侠缘 2007-07-05 21:15
ClassB m_b = new ClassB();
Type m_TypeB = m_b.GetType();
MethodInfo[] m_MethodInfos = m_TypeB.GetMethods(BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Instance);
foreach(MethodInfo m_MethodInfo in m_MethodInfos)
{
try
{
m_MethodInfo.Invoke(m_b,new object[0]);
}
catch(Exception ex){
System.Diagnostics.Trace.WriteLine(ex.Message);
}
}
这样可以调用到4个方法,算是一个解决方法吧。
re: 小有难度的一题,想了好久也没有解决! Wu.Country@侠缘 2007-07-05 20:45
@deerchao
自己把代码运行一下就知道了。
我要的是调用ClassA里的:
MessageBox.Show("ClassA:ITest.ShowMsg:private");
你的方法调用的ClassB里的:
MessageBox.Show("ClassB:ITest.ShowMsg:private");
re: 小有难度的一题,想了好久也没有解决! Wu.Country@侠缘 2007-07-05 11:06
@deerchao
自己动手试一下,就知道我说的是什么要求了。
不知道哪位有相关资料或者参考说明的,指点一下也行。
@点卡
@UMU
人家的JS代码很规范!
不过发现一个小BUG,就是如果用户的系统日期不对,那么验证ID时也会错。
例如:我把系统时间调也1980年,那么所有1980年以后的ID都不能通过验证!
XP下的系统日期最小可以设置1980,最大可以设置为2099!
re: 如何让Label的背景透明(小技巧) Wu.Country@侠缘 2007-06-28 18:31
@webq
只用一个普通的label没有背景图片可以设置。
@alligator
试过了,无效!
re: 用C#预览视频文件(简略) Wu.Country@侠缘 2007-06-25 19:29
最后说明一下,因为MediaDet类本身就是一个媒体测试类,它的实际运行结果与目标机器上的一些配置相关,特别是DS的Filter,如果默认的Filter不支持这样截取图片,那么你会得到错误。
而这个类功能有限,不能自手动设定Filter来截取视频,所以不能完全指望它能截取所有图片。
其次,它不仅不能自己设置Filter,更不会为你添加Filter,也就是说,如果目标机器上没有安装一些特殊的Filter,这个方法也是不能生成预览图片的。
简单的讲,如果你双击一个视频文件,OS可以自动打开并播放它,那么这个小的测试程序是可以截取图片的。如果双击不能打开,那么它也很难生成图片。
最后,PowerDVD的Filter不支持生成预览图片,所以,所有使用PowerDVD的Filter的多媒体文件无法生成预览图片。
其它的像WMV,AVI,MPEG,RM等文件,都还是可以的。
MPEG文件如果使用MainConcept公司或者ElecCard的Filter也是可以的!
好了,简略的讨论一下。
支持使用C++/CLI
我觉得楼主的问题主要是在对C#的接口实现上与C#的语法上与C++产生了理解上的冲突。
不能完全用C++的思路来考虑C#。
C#的接口实现存在显示实现与隐式实现两种,楼主的问题要用隐式实现来满足要求。因为三个接口函数同名,而没有明确给出要实现那一个,所以出现问题。如果使用隐式实现,而且在调用时,实现显式转换就不存在这个问题了。
实现时要明确:
IInterface1.Func1(){
//实现
}
IInterface2.Func1(){
//实现
}
这样,就明确的隐式实现了两个接口里的两个同名方法。
而调用时,就是前面已经提到的:
//以下是COPY的
public void func1()
{
if (typeof(T) == typeof(Interface1))
{
((Interface1)_aClass).func1();
}
else if (typeof(T) == typeof(Interface2))
{
((Interface2)_aClass).func1();
}
throw new Exception("invalid type,must be Interface1 or Interface2");
}
更多内容查找接口的隐式实现。
个人见解!
没问题,欢迎与大家交流。我写出来就是想和大家交流的。
好长时间没管这个控件,最近我的同事也在他的项目中使用这个控件,在.Net2,0下可以直接运行该控件,不用重新编译。
至于在2005下不能通过编译的情况我们暂时还没有时间去尝试解决。
解决后一定在该博客上公开。
谢谢。
其实翻译中有很多我自己不太理解的,不仅是英语上的,也有技术上的。
很害怕有误读者,所以即没有公开发布,也附带了源文。
翻译仅花参考,建议参考源文。
还剩下5篇,估计在下星期里可以全部完成,然后会写一些阅读和翻译体会,对C#里一些重要的东西做一些总结,相信总结的东西会比翻译的要好理解一些。
最后,不管是给与评论还是没有的,在此都谢过了,我能坚持阅读和翻译,有一半的动力是网友们的支持。每篇没有公开的文章者能有网友在查看,我确实感觉有一种责任。还好,我坚持下来了,说真的,在中途有段时间,真的很担心自己在什么时候坚持不了会放弃掉。谢谢大家。
re: 随笔2.0 Wu.Country@侠缘 2007-03-28 17:30
@李学伟
或许吧。周末参加了一次MS的.Net俱乐部活动,很有一些人对.Net的前景都不是很看好。为什么?说真的,我也搞不明白。
但也是直觉告诉我,总有一天,C++程序员不能再以性能为借口来排斥C#语言。
最近对C#的学习让我明白,C#的伸缩性很大,一个有经验的C#程序员和一个入门的C#程序员还是很好区分的。然而,目前正是因为太多的C#入门级程序员在使用它(我也算是吧),所以没能完全的发挥C#的真实魅力,以至于现在还是很多C++程序对C#有所偏见,觉得C#就是没C++效率高。然而试看程序语言发展历史,C/C++的经久不衰是有它的实力的,而且是经历了历史的验证的。
C#,或者说是IL,发展才几年的时间,可以说不足C/C++的一个零头,这么短的时间,真不好说什么,然而历史也在检验C#,我只是以个人观点看好它而以,希望直觉是正确的。
COPY以后一定是一个新的对象。
但如果原对象里有一个引用指针,那么在COPY这个引用指针的时候有两种COPY方法,一种就是直接把指针的地址COPY过去,这时就是浅COPY。
另一个方法就是再NEW一个对象,然后递归COPY到这个新对象上。这时的COPY就是深COPY。
但深COPY与浅COPY也不绝对就是这样的,还是上面的问题,如果引用里又有引用,结果在第二层的引用上使用的是浅COPY,那么这时就出现了很复杂的问题。而作者极力反对这种深浅COPY混用的方法。这也是这一原则的核心。
具体用哪个COPY都没关系,关键是开发者要自己心中有数,这两种COPY到底有什么区别,视情况选择一个使用就行了,不要混用。
is是一个C#关键字,用于对类型的安全性检测,它对应着一个IL指令:isinst
is并不是什么虚函数,就是个操作符,对应一个IL指令。
MustBeOverridedByDerived
可以是abstract,但就算是强制要求,类的设计者一样可以只拷贝一半数据,然后COPY引用,还是存在浅拷贝与深拷贝问题。
所以,这样的问题是开发者应该明白的问题,怎样拷贝数据完全是开发人员的责任,与语言没有关系。
@wood1939
是呀,作者的啰嗦我已经习惯了。当成是一种风格吧。
re: Effective C# 原则28:避免转换操作(译) Wu.Country@侠缘 2007-03-19 21:18
@wood1939
嗯,这样的理解确实有新意,我个人赞成。
@wood1939
作者知不知道我不清楚,可能是我的翻译对你有些误导,确实,我在翻译这一原则时有很多不理解的地方。
如果你对作者的观点有看法,可以参考源文。
@wood1939
谢谢,后面的译文里统一的译成了:显示
有些是笔误,有些是理解错误,完成全部翻译后会我会好好的整理一下的。