文章来自:http://interactiveasp.net/blogs/spgilmore/archive/2009/12/23/using-generics-in-delphi.aspx
包含泛型的单元:Generics.Defaults, Generics.Collections, SysUtils.pas
Here are the public declarations in Generics.Defaults.pas:
Classes / Interfaces | Description |
IComparer<T> | Implements a compare function returning less-than, greater-than or equal-to. |
IEqualityComparer<T> | Implements a compare function returning equal-to or not. |
TComparer<T> | Abstract class for implementing IComparer<T>. |
TEqualityComparer<T> | Abstract class for implementing IEqualityComparer<T> |
TSingletonImplementation | Weak-reference implementation of TInterfacedObject. Instances are not automatically freed. |
TDelegatedEqualityComparer<T> | A comparer that takes a delegated comparison function and uses it to determine equality. |
TDelegatedComparer<T> | A comparer that takes a delegated function to do the actual comparison. |
TCustomComparer<T> | An abstract singleton class for comparison operations. |
TStringComparer | Compares strings. |
Method prototypes / delegates | |
TComparison<T> | A delegate method prototype for less-than, greater-than, or equal-to comparisons. |
TEqualityComparison<T> | A delegate method prototype for equality comparisons. |
THasher<T> | A delegate method prototype for getting the hash value of an object or value. |
Concrete Functions | |
function BobJenkinsHash(const Data;
Len, InitData: Integer): Integer; |
Returns a hash from the given data. |
function BinaryCompare(const Left, Right: Pointer;
Size: Integer): Integer; |
A method to compare binary data. Does not match comparison prototypes, so must be used from a comparison class rather than pass as a delegated method. |
Here are the public declarations in Generics.Collections.pas:
Classes / Interfaces | Description |
TArray | Contains no data, but provides methods for working with arrays. Strangely, the class is not generic and the members are. This can easily be confused with TArray<T>, which is in System.pas, which contains data and no methods. |
TEnumerator<T> | Implements the iterator pattern on your data. |
TEnumerable<T> | Returns an enumerator, allowing your class to be used in a For..In construct. |
TList<T> | A generic collection or objects, records or primitives. |
TQueue<T> | A generic queue (first in / last out) collection. |
TStack<T> | A generic stack (first in / first out) collection. |
TPair<TKey, TValue> | A structure containing two child members of disparate types. |
TDictionary<TKey, TValue> | A searchable collection with lookup keys. |
TObjectList<T: class> | A generic collection of objects (records and primitives not allowed). |
TObjectQueue<T: class> | A generic queue of objects. |
TObjectStack<T: class> | A generic stack of objects. |
TObjectDictionary<TKey, TValue> | A generic collection of owned objects with lookup keys. |
Enums | |
TCollectionNotification | Used in TCollectionNotifyEvent<> |
TDictionaryOwnerships | Used by TObjectDictionary<> |
Method prototypes / delegates | |
TCollectionNotifyEvent<T> | Used by various collections to implement an observer pattern. |
Concrete functions | |
InCircularRange | |
Type aliases | |
PObject | Pointer to TObject. |
Exceptions | |
ENotsupportedException |
Here are the pertinent declarations in SysUtils.pas:
Method prototypes / delegates | Description |
TProc | A procedure with no parameters. |
TProc<T> | A procedure with one generic parameter. |
TProc<T1, T2> | A procedure with two generic parameters. |
TProc<T1, T2, T3> | A procedure with three generic parameters. |
TProc<T1, T2, T3, T4> | A procedure with four generic parameters. |
TFunc<TResult> | A function with no parameters and a generic return type. |
TFunc<T, TResult> | A function with one generic parameter and a generic return type. |
TFunc<T1, T2, TResult> | A function with two generic parameters and a generic return type. |
TFunc<T1, T2, T3, TResult> | A function with three generic parameters and a generic return type. |
TFunc<T1, T2, T3, T4, TResult> | A function with four generic parameters and a generic return type. |
TPredicate<T> | A function with one generic parameter and a boolean return type. This is used by collections as a “filter” for elements. Elements that are passed to a predicate function which return false are excluded from the result. |