VB6中Open For、Put语句里的#号有何作用?是否源自更早VB版本?
VB6文件操作语句中#号的作用与来源
实际作用
这个#是VB文件操作语法里专门用来标记文件号的前缀,本身不产生任何额外的运行逻辑,作用就是明确告诉编译器:后面跟的整数是通过FreeFile()申请到的已打开文件的通道编号,不是别的普通变量或者常量。
VB6里所有原生文件操作语句——不管是Open、Put、Get、Close,还是读写文本用的Print #、Input #——这个#号都是可加可不加的,运行效果完全没区别。你看到的示例里Open和Put带了#、Close没带,纯粹是写代码的人习惯不统一,完全不影响代码正常运行。
比如下面两种写法执行结果100%一致:
' 全部带#的写法 Dim fnum As Integer fnum = FreeFile() Open "myFile.txt" For Binary As #fnum Put #fnum, 1, CA Close #fnum ' 全部不带#的写法 Dim fnum As Integer fnum = FreeFile() Open "myFile.txt" For Binary As fnum Put fnum, 1, CA Close fnum
语法溯源
这个写法确实是VB6之前就有的历史遗留规则,最早来自DOS时代的BASIC方言:GW-BASIC、QBasic、QuickBASIC这些VB的前身语言里,文件操作语句中引用文件号是强制要求加#的,不加就会报语法错误。
后来微软做Visual Basic的时候,为了兼容几十年积累下来的海量老BASIC代码,从VB1到VB6都保留了#的写法,同时放宽了语法限制允许省略#,慢慢就形成了现在加不加都能跑、不同人写出来的代码风格混杂的情况。
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

