掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Generics.Collections.TDictionary の ContainsValue (ID:40023)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Equalsをオーバーライドしないと、メモリアドレスの比較になってしまってると思いますよ。 例えば、TCityを二つCreateして同じ値をセットして片方をDictionaryに登録した後、もう一方を使って検索した場合に見つからないって事になるかと。 procedure TForm1.Button2Click(Sender: TObject); var Dictionary : TDictionary<String, TCity>; City : TCity; City2 : TCity; exist : boolean; begin Dictionary := TDictionary<String, TCity>.Create; Dictionary.Clear; Button1.Caption := Dictionary.ToString; City := TCity.Create; City.Country := 'イギリス'; City.Latitude := 515; City.Longitude := -17; Dictionary.Add('ロンドン', City); City2 := TCity.Create; City2.Country := 'イギリス'; City2.Latitude := 515; City2.Longitude := -17; exist := Dictionary.ContainsValue(City2); ShowMessage(BoolToStr(exist, true)); FreeAndNil(City2); FreeAndNil(City); FreeAndNil(Dictionary); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.