private
{ Private declarations }
public
{ Public declarations }
UserName1: String;
end;var
FrmMain: TFrmMain;
UserName2: String;
在上面的代码中,声明的UserName1和UserName2有什么区别???
我在实际使用中,好像在Public中声明的,在其他窗口中使用时,必须使用FrmMain.UserName1。
而在Var后面声明的,在其他窗口中使用时,直接使用UserName就可以了。请问一下,这两种声明有什么区别,实际使用过程中,用哪个比较好。
这需要看实际情况了,如果你想使用那个窗体,就写在public里,如果想做全局变量,就写var下面.
一般全局变量可以声明在一个公共的unit中
{ Public declarations }
UserName1: String;//公共的类成员,要通过类的实例来访问,每个实例都可能是不同的值
end;
var
FrmMain: TFrmMain;
UserName2: String;//全局变量,引用单元后即可访问。值是唯一的。
只是不记得在Var后面声明的是什么结果了。
之前看的书是讲Java和.Net的。感觉Var后面声明变量在Java和.Net里面似乎没有对应的地方。
应该是我粗略的理解了,没细研究。
二、UserName2不属于任何类,是这个单元的全局变量,另一个单元引用了这个单元,那这个变量也成那个单元的全局变量。
而且放在Public和Var后面不知有什么区别,反正用起来是差不多的。
书上又讲了一大堆Private和Public等的区别。
程序主要是我写的,我想放哪就放哪,至少我知道哪些该用,哪些不该用。
而且我们写的程序主要是和数据库打交道,明确的一点就是:能不调用别的窗口的东西,就不要调用。如果必须用,则尽量少调用。不然谁知道乱调用会有什么后果。
Private区 只能本单元访问
Public区的 其它单元可以通过类名加点再加变量名方式访问
Private区 只能本类访问
Public区的 其它类可以通过类名加点再加变量名方式访问
UserName1不要这样声明,要声明也要放在private里,外部访问通过在public声明一个属性来访问这个变量,这样: private
{ Private declarations }
FUserName1: String; proceduce SetUserName1(const Value:string);
public
{ Public declarations }
property UserName1: String read FUserName1 write SetUserName1;
end; 这样看起来麻烦了,但是好处不少,刚开始体会不到也没关系,代码写多了,就懂的这样做的好处,也就慢慢体会了面向对象一个重要概念“封装”,呵呵至于UserName2,这个全局变量,能不用就尽量不用。
{ Private declarations }
public
{ Public declarations }
UserName1: String;//这是一个类的public变量,所以你要通过TFrmMain类的实例才能访问到它。所以你引用了这个单元后,还要用FrmMain.UserName1才能访问。
end;var
FrmMain: TFrmMain;
UserName2: String;//这是全局变量。所以你引用了单元后,就可以直接访问它。java或.net中,没用var这种声明,因为java或.net中所有东西都必须放在类中。2种各有好处。一般来说,大中型程序中应该尽量避免UserName2这种写法,因为容易犯错并且不容易维护。比如你代码中有多处(几十处或更多)地方会改变UserName2的值,这样当你修改了其中一处的代码,其它地方也会受到影响。但是在比较简单的程序中无所谓,毕竟这样方便。