2017-01-14 39 views
0

我只是想知道,如果像下面的C#函數調用構造在Delphi中是可能的:德爾福 - 內嵌對象的聲明,並在函數調用指定屬性

C#代碼:

MyFunction(Param1, new MyClass() {property1 = "value1", property2 = true, property3 = 100}, Param3); 

至於現在在德爾福,我應該做到以下幾點,以得到這一結果:

Delphi代碼:

var 
    aMyClass: TMyClass; 
begin 
    aMyClass:= TMyClass.Create; 
    aMyClass.property1:= 'value1'; 
    aMyClass.property2:= True; 
    aMyClass.property3:= 100; 
    MyFunction(Param1, aMyClass, Param3); 
end; 

更詳細。

幫助讚賞。

+0

並確保您通過aMyClass通過引用 –

回答

2

在Delphi中,實現類似簡潔的唯一方法是定義一個帶有參數的構造函數來接收屬性值。

+0

@Marco Carboni對於它的價值,儘管它沒有幫助任何德爾福的工作,但這只是德爾福實施Pascal的限制。 Oxygene實現直接使用內聯初始化程序支持此操作。你可以簡單地在任何ctor調用中添加屬性賦值,所以如果只有一個默認的無參數ctor,那麼在這種情況下類似於:'MyFunction(param1,new MyClass(property1:='value',property2:= true),param3 )'。氧氣還支持動態對象,您可能也會遇到C#代碼。 – Deltics