這是我的other question的後續行動。模板(或其他技術)是否支持以下構造?
當我第一次聽說泛型時,它是在Delphi 2009發佈之前(他們首先介紹它的地方)。我知道它在.Net之前得到了支持,但我還沒有在這個領域挖掘。
閱讀泛型,我瞭解到它允許類給它一個變量參數,並且您傳遞給它的任何值都將被替換爲類的所有代碼。
的方式仿製藥進行了描述(或至少,我的理解泛型允許的)是,鑑於以下聲明:
procedure TMyClass<T>.Init;
begin
FField := T.Create(nil);
end;
我認爲這是可行的。我以爲這裏編譯就會失敗情況如下:
begin
TMyClass<TComponent>.Create; //Works correctly
TMyClass<TObject>.Create; //Doesn't work, as even though it HAS a constructor, it has none that receive a single pointer parameter
TMyClass<string>.Create; //Doesn't work, not an object.
end;
現在,我清楚地知道我錯了。所以,現在我想知道,是否有支持這種構造的技術/語言特性。代碼模板也許?其他編程語言中的泛型?或者也許別的東西?
如果我錯了,糾正我,但C++中的模板具有在使用它的單元範圍內「定義」的缺點。因此,單位A.TMyClass將與單位B.TMyClass 不兼容。對? –
2010-10-23 19:12:49
在.NET中,在IL級別支持泛型和統一的輸入系統(所有東西,包括來自System.Object的值類型),所以.NET平臺上的幾乎所有語言(包括Delphi Prism,VB.NET和很多其他)同時支持,而不僅僅是C#。 – 2010-10-23 19:19:36
@Ken:你錯了。 @Jeroen:那是真的。 C#確實有泛型,所以我沒有錯,但我可以更正確。 – Puppy 2010-10-23 19:23:14