いろいろ調べたのですが、
TStrings型とTStringList型の違いがよくわかりません。
どうかご教授お願いいたします。
以下のようなメソッド、プロパティ、イベントがあります
Add,Delete,Clear,Count,onChange他
TStringsは、ヘルプを見てわかるとおり、TStringsは抽象メソッド(とりあえず定義だけしてあって、実体がないメソッド)があります。それに実体をつけてあげたのが、TStringListクラスです。実際に使う際には、TStringListをつかうのが普通です。
ではなぜTStringsなんてものがあるかというと、TStringListとはまた違う形で、
文字列リストクラスを作るときのためにあるのです。
関数の引数としてTStringListを受け取りたいときは、TStrings型を要求しておいた方が、データ管理方式は同じだが、祖先が違うようなクラスを受け取れる可能性があるぶん、有利だと思います。
別に警告されることもありませんしね。
(まあ、入力補完機能がちょっと「ん?」ですが)
っとまあ、こんな感じでいいでしょう。
詳しく知ってるわけではありませんから、ちょっと違うかもしれません。
よければどなたかにフォローをお願いしたいです。
> TStrings型とTStringList型の違いがよくわかりません。
たかみさんの説明でほぼ尽きていますが、TStrings は、「文字列リスト」全体の
基礎となる抽象クラスですから、実際のインスタンスを生成してつかうことはでき
ません。これから派生した具体クラスの共通の機能を表すために、存在します。
ですから、TMemo.Lines や TListBox.Items など、共通の機能で実際は異なった
具体クラスの場合のようにユーザがアクセスするとき便利なように TStrings 型
になっています。クラス型 OOP の「多態性」の一つです。
自分で「文字列リスト」を使うときは TStringList を使う必要があります。
ツイート | ![]() |