2017-09-14 8 views
5

私はPairList、私も解放する必要性を作成したペアを解放するとき、私はコードTList <TPair <UInt32、UInt32 >>は無料である必要がありますか?

procedure Pair; 
var 
    PairList: TList<TPair<UInt32, UInt32>>; 
    LPair: TPair<UInt32, UInt32>; 
begin 
    PairList := TList<TPair<UInt32, UInt32>>.Create; 
    try 
    PairList.Add(LPair.Create(4,10)); 
    finally 
    PairList.Free; 
    end; 
end; 

を書きましたの?

+3

'LPair.Create(4,10) 'urgh、値型インスタンスのコンストラクタEmbarcaderoはあなたが苦しんでいるようにしようとしています。 FWIWでは、このペアタイプはここであまり適切ではありません。それは辞書のために設計されています。名前が適切でないという事実を無視して、適切な数のメンバーを持つタイプのものを使用しないでください。 –

+0

あなたは私に示唆してもらえますか?TListに入れた2つの値が必要です –

+3

レコードタイプを宣言してください。 –

答えて

9

それは値型であるため、あなたは、TPair変数を解放する必要はありません - レコードが

TPair<TKey,TValue> = record 
    Key: TKey; 
    Value: TValue; 
    constructor Create(const AKey: TKey; const AValue: TValue); 
    end; 

として宣言あなたはLPair.Freeでそれを解放しようとした場合は、コンパイラエラー

E2003になるだろう宣言されていない識別子: 'Free'

関連する問題