• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

有趣,看看Delphi的property和C#的field

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Delphi的书说,property是Delphi的新发明。看看它的实现方式:

private
    age: Integer;
    Function GetAge:Integer;
    Procedure SetAge(const Value:Integer);
public
    property Age:Integer read age write age;
implementation
    Function GetAge:Integer
    begin
         result := age;
    end;
    Procedure   类名.SetAge(const Value:Integer)
    begin
        if (Value = age) then exit;
        age = Value;
    end;
......

请看,和C#的filed何其相似啊,只不过在C#中是使用get、set访问器来实现的而已。

在java和c++中,都没有实现这种特性。如果要完成对类中的私有变量的读写,只能是自定义get和set方法。调用的时候,也是调用这些方法。而在delphi中,可以直接读写property,同样的在C#中则直接调用field。

同样的,在delphi里,property不能作为参数传递给procedure;而在C#中,field也是不能作为参数传递给方法的。何其相似啊!

想来也不奇怪,我记得delphi的创始人(我忘记名字了,呵呵),就是被微软从inprise挖去的,然后又主持了.Net的开发。所以借鉴delphi的一些特性,也是顺其自然的事吧。

C#是一门新语言,然而正因为其新,出生在c++、java以及delphi之后,所以才能借鉴他们的优势;更因为新,所以可以摒弃遗老的气息,显得魅力非凡。

说实话,我在打前面那段delphi代码才是痛苦,大小写老是出错,冒号也总是忘了加,真是痛苦。不过这和习惯有关,而和语言无关。习惯了c#,自然喜欢c#的很多好处了。
 

btw:在看delphi的这本书时,将property翻译为特性。所以当我最初看到的时候,还以为是近于C#的attribute呢。关于property和attribute在翻译的时候老是容易混淆。个人认为,最好是不要翻译成汉语,实在要翻译,我推荐将property翻译为“属性”,而将attribute翻译为“特性”。
       


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap