delphi2006语言新特性——类静态字段、类属性

本文深入探讨了Delphi2006中引入的类静态字段和类属性两大新特性。类静态字段允许在类未实例化时访问,实现所有实例间的数据共享。类属性则提供了一种无需实例化即可访问的机制,通过类方法或类静态字段实现。这些特性极大丰富了Delphi的类设计灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自http://hi.baidu.com/homejun/blog/item/3cd2cd1b6c60f4faaf5133d0.html
delphi2006语言新特性——类静态字段、类属性
类静态字段 Class Fields
(直译应为类字段,为避免混淆,本文统称类静态字段)

类静态字段是类的一种特殊字段,它可以在类没有实例化时访问(普通的实例字段必须在类实例化后才能访问)。类静态字段储存的值可以被所有实例共享。(很有意思,赋一下值,所有类,实例都会改变,感觉很有用)
你可以用关键字class var在类的声明部分定义一个类静态字段块,所有在class var 以后定义的字段都是静态存储的。当遇到以下情况时类静态字段块结束:
1声明另外一个 class var 或var
2声明一个 procedure 或 function (包含class procedures and class functions)
3声明一个 property (包含class properties)
4声明一个 constructor 或 destructor
5可见性范围修饰符(public, private, protected, published, strict private, and strict protected)
例:
type
TMyClass = class
public
class var // 定义一个类静态字段块
Red: Integer;
Green: Integer;
Blue: Integer;
var // 结束类静态字段块
InstanceField: Integer;
end;

类静态字段 Red, Green,和Blue 能被以下代码存取:

TMyClass.Red := 1;
TMyClass.Green := 2;
TMyClass.Blue := 3;

类静态字段也可以通过一个类实例存取,如下面的声明:

var
myObject: TMyClass;

下面的代码也可以达到同样的效果。

myObject.Red := 1;
myObject.Green := 2;
myObject.Blue := 3;
类属性 Class Properties
类属性不用实例化就可以存取。类属性的存取必须定义为类方法,或者类静态字段。(看来只不过是编译器的魔术,实际上是用类方法、类静态字段存取的)类属性使用class property 关键字声明。类属性不能published,并且不能有stored 或 default值。
例:
type
TMyClass = class
strict private
class var // 定义一个类静态字段块
FRed: Integer;
FGreen: Integer;
FBlue: Integer;
public // 结束类静态字段块
class property Red: Integer read FRed write FRed;
class property Green: Integer read FGreen write FGreen;
class property Blue: Integer read FBlue write FBlue;
end;
你可以用下面的代码存取:
TMyClass.Red := 0;
TMyClass.Blue := 0;
TMyClass.Green := 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值