2014-10-29 127 views
0
type 
    TGeneric<T> = class(TBase) 
    public 
    procedure Swap(Harry : T); 
    procedure NotifyAll(AParams : T); 
    end; 

陣列我有兩個問題泛型和常量

  1. 有什麼辦法,我可以在任何其他類型的樣變異等類型轉換的通用變量
  2. 我如何可以傳遞泛型類型函數接受常量數組喜歡這裏

    Delphi - How can I pass Generic parameter to function that accept Array of const parameter

+0

嗨約翰,理想情況下,你會問兩個問題 – 2014-10-29 08:17:22

+0

這兩個問題都是相關的,所以我在這裏沒有單獨問他們。 – 2014-10-29 08:22:55

+1

你已經將問題2的答案鏈接了,或者我在這裏丟失了什麼? – 2014-10-29 08:24:43

回答

1

有什麼辦法,我可以在任何其他類型強制轉換的通用變量一樣Variant

正如我回答說給你鏈接的問題,與仿製藥效果很好的變異類型爲TValue

procedure TMyClass.Foo<T>(const Item: T); 
var 
    Value: TValue; 
begin 
    Value := TValue.From<T>(Item); 
end; 

如何傳遞泛型類型在接受array of const功能:您可以使用From方法從一個普通的類型做出TValue實例?

這是在question you linked to中詢問的完全相同的問題。答案與此處所述的相同,即您不能將一個通用參數作爲variant open array parameter進行傳遞。再次,TValue來救援。而不是使用變體開放數組參數,請使用開放數組TValue


底部這裏行是與泛型的效果很好,並與所述的Delphi RTL供給,所述變體類型是TValue

+0

如果我使用tvalue它打破了我的代碼的很多其他部分,這就是爲什麼我要避免它 – 2014-10-29 09:20:33

+0

您將不得不接受,您不能傳遞一個泛型參數作爲變量開放數組參數。 – 2014-10-29 09:27:06

+0

我可以在其他類型中進行類型轉換,然後發送它,但不是Tvalue – 2014-10-29 09:29:38