コンパイラのバージョンに応じて、Spring.Collections.TCollections.Create
メソッドの多くは、コンパイラができないことを適用しています。つまり、実装を非常にスリムな汎用クラスに折りたたんでいます。一部のメソッドは XE 以降でそれを実行しており、一部は XE7 以降でのみ実行されています (GetTypeKind
組み込み関数を使用すると、コンパイル時に型解決を実行できますTCollections.CreateList<T>
。たとえば、パラメーターなしを参照してください)。
IList<T>
多くの異なるタイプ(T はクラスまたはインターフェイス)を作成する場合、これによりバイナリ サイズが大幅に削減されTFolded(Object|Interface)List<T>
ます。ただし、インターフェイスを介して、指定したとおりにアイテムにアクセスしており、プロパティはorElementType
だけでなく正しいタイプを返します。ベルリンでは、さまざまなオブジェクト リストごとに 1K 未満しか追加されませんが、.TObject
IInterface
IList<T>
T が完全に設計どおりのクラスである場合に、 a によってサポートされるanをTCollections.CreateList<T>
返すことについて。が渡されたため、 とまったく同じ動作をします。IList<T>
TFoldedObjectList<T>
OwnsObject
False
TList<T>
Spring4D コレクションはインターフェース ベースであるため、インターフェースの契約に従って動作する限り、インターフェースの背後にあるクラスは問題ではありません。
IList<T>
リストは asと notだけ持ち運ぶようにしてください。TList<T>
両方の方法でリストを作成できます (TCollections
メソッドを使用するときに前述した利点があります)。私たち自身のアプリケーションでは、まだクラスのコンストラクターを使用している場所もあれば、.NET の静的メソッドを使用している場所もたくさんありますSpring.Collections.TCollections
。
ところで:
私はあなたのフォークでアクティビティを見ましたが、既にそこにあるため、Map/Reduce を実装する必要はありません。Spring4D コレクションは .NET に基づいてモデル化されているため、and と呼ばれますSelect
( Aggregate
「参考文献」を参照Spring.Collections.TEnumerable
)。IEnumerable<T>
ただし、インターフェイスは汎用のパラメーター化されたメソッドを持ってはならないため、直接使用することはできません。