不然, 编译器就会:
假定先修改, 先要备份; 使用前后要增减引用计数; 还要套上 try finally.
指定了 const 就可以避免以上过程从而提高效率.
测试效果图:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} //判断一个字符串中数字的个数 function GetNum1(str: string): Integer; var i: Integer; begin Result := 0; for i := 1 to Length(str) do if str[i] in ['0'..'9'] then Inc(Result); end; //同样的函数只是给参数加上 const function GetNum2(const str: string): Integer; var i: Integer; begin Result := 0; for i := 1 to Length(str) do if str[i] in ['0'..'9'] then Inc(Result); end; {对比测试} procedure TForm1.Button1Click(Sender: TObject); var s: string; n: Cardinal; i: Integer; begin s := 'ABC123'; n := GetTickCount; for i := 0 to 1000000 do GetNum1(s); n := GetTickCount - n; Text := IntToStr(n) + ' - '; n := GetTickCount; for i := 0 to 1000000 do GetNum2(s); n := GetTickCount - n; Text := Text + IntToStr(n); end; end.