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


    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翻译为“特性”。
           

  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/wayfarer/p/64869.html
Copyright © 2020-2023  润新知