Delphi 系统[10]关键字和保留字 with

Delphi 系统[10]关键字和保留字  with

1、定义:

with语句是引用记录的字段或对象的字段、属性和方法的缩写/简化。

2、语法:

1
2
with obj do statement
with obj1, ..., objn do statement

其中,obj是一个表达式,产生对记录、对象实例、类实例、接口或类类型(元类)实例的引用,语句是任何简单或结构化语句。在语句中,您可以仅使用obj的标识符引用其字段、属性和方法,而不使用限定符。  

3、示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//例如:以下申明
type TDate = record
  Day: Integer;
  Month: Integer;
  Year: Integer;
end;
var OrderDate: TDate;
 
//可以用下面的语句来写:
with OrderDate do
  if Month = 12 then
  begin
    Month := 1;
    Year := Year + 1;
  end
  else
    Month := Month + 1;
 
//也相当于
if OrderDate.Month = 12 then
begin
  OrderDate.Month := 1;
  OrderDate.Year := OrderDate.Year + 1;
end
else
  OrderDate.Month := OrderDate.Month + 1;

如果obj的解释涉及索引数组或取消引用指针,则在执行语句之前,这些操作只执行一次。这使得语句既高效又简洁。这也意味着在with语句当前执行期间,对语句内变量的赋值不能影响obj的解释。

with语句中的每个变量引用或方法名都将被解释为指定对象或记录的成员(如果可能)。如果要从with语句访问另一个同名变量或方法,则需要在其前面加上限定符,如以下示例所示:

1
2
3
4
5
with OrderDate do
  begin
    Year := Unit1.Year
    ...
  end;

当with之后出现多个对象或记录时,整个语句将被视为一系列嵌套with语句。因此 使用obj1、obj2、…、objn do语句相当于:

1
2
3
4
5
with obj1 do
      with obj2 do
         ...
         with objn do
    statement

在这种情况下,语句中的每个变量引用或方法名都被解释为objn的一个成员(如果可能);否则,如有可能,将其解释为objn-1的成员;等等同样的规则也适用于解释 objs 本身,因此,例如,如果objn同时是obj1和obj2的成员,则将其解释为obj2.objn。

  

 

 

 

创建时间:2021.08.11  更新时间:

posted on   滔Roy  阅读(254)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示