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

相关文章