Private Sub Form_Load()
Dim a As String
Dim b As String
Dim c As String if ……  then
    ''''
  end if
End Sub很多都是把DIM定义都写在前面,这样会占有内存吗?我想需要的时候,再定义行不?比如:
Private Sub Form_Load()
 if ……  then
   Dim a As String
   a="xxxxxxxx"
  end if
End Sub个人觉得,需要条件判断的,在条件里再定义,这样会好点,事实是这样么?

解决方案 »

  1.   

    按MSDN的解释:注意当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处。,我认为有几点好处,可以对过程使用的变量一目了然,不会出错,便于查看.
    至于在该过程中开始定义变量或中间定义变量,只要变量的个数相同及数据类型相同.占用内存是相同的.
      

  2.   

    一般人因为懒 大半以上都没如我如此定义变量名1.尽量以英文直译 变量名,可缩写, 以大概看得懂为原则2.例如 Dim tmpstr$ 我会用 Dim TmpStr$ 如此, 在其它地方拼错,没自动转大写的话,立刻知道.
      

  3.   

    纯粹习惯问题,再者VB没有要求一定要DIM,即便是C++之类一定要声明变量的,有两种方式你看如何?A) 在前面定义变量
    int i;
    ...
    for(i=0;i<30;i++)
    ...
    B) 在当中定义变量
    ...
    for(int i=0;i<30;i++)
    ...内存的问题你大可不必担心,现在的编译器会自动识别那些变量是有用的,那些是从来不用的。对于从来都不用的会自动优化的。
      

  4.   

    1.这样定义变量源于标准C,在标准C中不允许随用随定义变量,到了C++就允许随用随定义变量了,但大多数程序员仍遵循标准C的定义方式,代代相传的习性而已。定义变量不管你用不用它都会占用内存。
    2.当然行。
    3.你想得是在条件里定义变量,条件不成立时,变量就不定义了,节省了内存空间,事实上不是这样,只要定义了变量,不管你在哪定义,编译时都会为这些变量预留空间,也就是说只要定义了变量,你用不用变量都占内存空间。为了便于程序的维护(你自己写着玩的也就无所谓了),建议你继续延用标准C的定义方式,也就是把变量定义在过程或函数的最前面。
      

  5.   

    不一定,在代码中定义的变量有时候不占内存
    如下dim i  as longif i=90 then
       dim j as long
       j=52
    endif只有执行到i=90的时候才会分配j局部变量是放在堆栈中的
    分配一个LONG
    其实就是sub esp,4