在public中和在implementation前面定义的全局变量的区别

前言

在delphi进行编码时,工程中经常需要用到全局变量,所以正确的使用全局变量将尤为重要。本文主要介绍在public中和在implementation前面定义的全局变量的区别。

一、单元文件定义的全局变量

先附上一个单元文件,代码中给出个变量所处的位置。
单元名称为uni1.pas

 TForm1=Class(TForm)
    Edit1 : TEdit;
    Label1 : TLabel;
    Button1 : TButton;
    Button2 : TButton;
    Button3 : Tbutton;
    procedure Button1Click(Sender : TObject);
    procedure Button2Click(Sender : TObject);
    procedure Button3Click(Sender : TObject);
     private
   {Private declarations}
   Name : String='Deen';  //成员变量;
  public
     {Public declarations}
  end;
   Var

  Form1 : TForm;
  Name : String;//全局变量。

   implementation
  {$R *.dfm}

 procedure TForm1.Button1Click(Sender : TObject);
 var
  Name : String; //局部变量;
 begin
   Name := '局部变量';
   Edit1.Text := Name;
 end;
 
 end.

二、各变量的定义、作用范围及使用

全局变量:是指在类外声明的变量,通常这种变量时在整个工程内有效的,也就是说在整个工程中的类都可以使用。该变量的生存周期是在工程创建时有效,工程销毁时销毁。

在其他单元文件中可直接使用,不需加被引用单元的窗体名。
比如我在一个窗体中,声明了一个全局变量,如下:

var
  W_POS_BankForm: TW_POS_BankForm;
   Test:string='dancy';   //测试全局变量

那么我就可以直接在另一个窗体中使用,如下:

ShowMessage(Test);

注:Test前面可以加文件名(注意不是窗体名),如unit.Test.

成员变量:是指在类中声明的变量,这种变量在类中的方法都可以使用。其生命周期是在类创建时有效,类销毁时销毁。

在其他单元文件中使用时,需要加被引用单元的窗体名。

Form1.name;
name前面加的是窗体名.

局部变量:是指在方法内部声明的变量,这种变量只能在方法内部使用。其生命周期也是在方法内部有效,当方法调用结束后,其内部所声明的变量也随之销毁。

只在本单元中使用。

三、在public中和在implementation前面定义的全局变量的区别

不管是使用成员变量还是全局变量,都需把它们先use到使用的单元文件中。

在public中定义的是类成员,在implementation上面定义的才是全局变量 Public中的定义的,在其他单元(Unit)引用要加该单元的名称。 而在implementation上面引用的才是真正的全局变量,在其他单元中引用,直接调用就可以,不用加单元名称。

你可能感兴趣的:(全局变量,public,Delphi,implement)