TStrings 和 TStringlist 有什么区别 ( 积分: 10 )

  • 主题发起人 主题发起人 gaowei
  • 开始时间 开始时间
G

gaowei

Unregistered / Unconfirmed
GUEST, unregistred user!
请详细解答,急!!!!
 
请详细解答,急!!!!
 
下面是我个人的一点理解,不知道对不对,请高手指正啊[8D]

TStringList是从TStrings继承下来的一个子类,
也就是说TStringList是TStrings的一种,
TStringList有Values属性,其实记录的就是类似这样的数据
aaa=111
bbb=222
ccc=333
如:StrList.Values['aaa'] = '111',
TStrings就不限于这种格式了,是更通用的一行行文本的一种类型
I'm a student
I'm a teacher
...
 
TStrings是抽象类,方法是抽象的,没有实现。
TStringList是具体类,方法都被实现了。
就像‘形状’是抽象类,‘三角形’,‘矩形’才是具体类。
你不能创造一个‘形状’的实例。但是你可以创建‘矩形’,‘三角形’等。
 
mvb (2002-12-29 16:47:00)
在Object Pascal语言中,类变量相当于一个指针.父类变量可以指向子类实例,但只能调用在
父类中声明的属性和方法.如果采用第一种方法,就无法调用TStringList的Find和Sort方法.
TStrings是一个抽象类.在抽象类中,有一种抽象方法.它的实现并没有出现在定义它的类说
明中,而是放在子类中具体说明,如TStrings的Delete和Clear方法.这种方法事实上只定义
了一个接口.一个方法在被说明为virtual或dynamic之后加上abstract后,就成为一个抽象
方法.
抽象类的存在可以实现面向对象编程的一个特征:多态性.即多个子类继承自一个父类,用一
个父类变量可以访问多个子类的实例,并调用不同的方法.例如:
var
s1:TStrings;
s2:TStringList;
s3:TStringGridStrings;
begin
s1:=TStringList.Create;
s1.add; //此时调用的是TStringList中的方法.
s1.Destory;
s1:=TStringGridStrings.Create;
s1.Add; //此时调用的是TStringGridStrings中的方法
s1.Destory;
end;
 
使用TStringList载入文件比TStrings快多了。
 
多人接受答案了。
 
后退
顶部