在Visual Basic和BASIC中,DIM代表什么?

308

在 Visual Basic 中,Dim 代表什么意思?

10个回答

350

在BASIC语言中,“Dim”最初是代表“维度”的意思,因为它被用来定义数组的维度。

(最初的BASIC实现是Dartmouth BASIC,它是从FORTRAN演变而来,在FORTRAN中,DIMENSION一词被拼写出来。)

如今,“Dim”不仅可以用于定义数组,还可以用于定义任何变量,因此其含义已经不再直观。


75
一些背景信息可能有所帮助。在早期版本的Basic中,唯一需要声明的变量是数组。 "Dim"关键字用于设置此数组的维数。 - Chris Simpson
32
我记得在80年代初读过一本GW-BASIC编程指南,我清楚地记得它解释了DIM的意思是“在内存中声明”。阅读1964年发布的达特茅斯基础指南时,LET和READ语句用于为变量分配值,并且在1968年后,DIM被包含并且实际上用于数组。http://www.bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf - RandyMorris
5
需要翻译的内容:需要记住的一件事是,在语言发展的早期,常常会将一个关键词负载过高以具有多个含义。由于在原始版本的Basic中,“Dim”已经是用于声明数组变量的关键字,因此该关键字被扩展以包括声明所有变量。出于多种原因,我们避免引入新的关键字,其中之一是不想破坏已经使用新关键字作为变量名的现有程序。如今,我们拥有更先进的解析技术和更快的计算机,我们不再看到这些类型的限制。 - zumalifeguard
3
例如,在后来的基础编程语言(如Visual Basic)中,类型名和变量名可以使用相同的名称。在C++中,一个过度使用多义的关键字是”static“,它在不同的语境中意味着不同的东西。 - zumalifeguard
1
对于那些查看@RandyMorris链接的伟大BASIC手册的人,DIM的第一个参考出现在页码为21的位置,或者在PDF本身中是第26页。更正式的定义在页码为37或41的位置,或者在PDF本身中。 - John Cummings

132

Dim有不同的含义。

我发现关于Dim的含义有"在内存中声明"的说法,更相关的参考是Oracle发布的Dim语句文档,作为Siebel VB语言参考的一部分。当然,你可以争辩说如果你不在内存中声明变量,你会在哪里声明呢?也许"在模块中声明"是一个好的替代方案,考虑到Dim的用法。

在我看来,"在内存中声明"实际上是一个记忆口诀,旨在使学习如何使用Dim更容易。我认为"在内存中声明"是更好的含义,因为它描述了当前版本语言中它所做的事情,但这并不是正确的含义。

事实上,在Basic的起源中,Dim仅用于声明数组。对于常规变量,不使用关键字,而是从名称推断其类型。例如,如果变量名称以$结尾,则为字符串(这是您甚至可以在VB6中的方法名称中看到的内容,例如Mid$)。因此,您只需使用Dim来为数组提供维度(请注意,ReDim调整数组大小)。


实际上,这重要吗?我的意思是,它只是一个关键词,在一种人造语言中有着其特定含义。它不必是英语或其他任何自然语言中的单词。因此,它可以意味着你想要的任何东西,重要的是它能起作用。

无论如何,这并不完全正确。由于BASIC是我们文化的一部分,了解它为什么会成为现在的样子-我希望-将有助于改善我们对世界的视觉。


我坐在电脑前,希望能帮助保留我们文化的一小部分,这似乎已经消失了,被我们猜测它是什么代替了。因此,我挖掘了MSDN,包括当前和1998年版本的旧CD。我还搜索了旧版QBasic [必须使用DOSBox] 的文档,并设法获取了一些Darthmouth手册,所有这些都是为了找出他们如何谈论Dim。令我失望的是,他们没有说Dim代表什么,只说了如何使用它。

但在我的希望渺茫之前,我找到了这个BBC Microcomputer System Used Guide(声称来自1984年,我不想怀疑它)。BBC微型计算机使用了一种名为BBC BASIC的变体,并在文档中进行了描述。尽管如此,它并没有说明Dim代表什么,但它在第104页上说:

…你可以将N$定义为具有任意数量条目的数组。例如,DIM N$(1000) 将创建一个字符串数组,其中有1000个不同名称的空间。

正如我所说,它并没有说Dim代表维度,但证明了将DimDimension相关联是写该文档时的一种常见做法。

现在,我后来得到了一个令人满意的惊喜(在第208页),描述DIM关键字的章节标题(注意:未列在目录中)说:

DIM:数组的维数

所以,虽然我没有找到“Dim代表...”这句话,但我想任何能够阅读这些文档的正常人都会认为 Dim 意味着“维度”。


带着新的希望,我决定搜索有关如何选择Dim的信息。再次,我没有找到相关的解释,但我找到了一句明确的话:

在使用数组之前,必须在DIM(维度)语句中定义它。

您可以在True BASIC inc的网页上找到这个句子,作为True BASIC在线用户指南的一部分。True BASIC inc是由Thomas Eugene Kurtz共同创立BASIC的合著者。


实际上,DimDIMENSION的缩写。是的,在FORTRAN中存在这个概念,因此很可能是受到FORTRAN的影响而被采用的,正如Patrick McDonald在他的回答中所说的那样


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)

1
我也听说过“在内存中声明”。 - jocull
5
“真的吗,这重要吗?” 这是一则未被充分赏识的笑话。另外,我现在会坚持告诉人们,“Dim”实际上就是这个意思。 - Jacob Stamm

31

它是“Dimension”的缩写,最初用于BASIC语言中指定数组的大小。

DIM -(代表dimension)定义数组的大小

参考:http://en.wikipedia.org/wiki/Dartmouth_BASIC

下面是原始的BASIC编译器源代码的一部分,当找到一个DIM命令时,这段代码会跳转到一个位置,在那里可以清楚地看到关键字的原始意图:

DIM    LDA XR01             BACK OFF OBJECT POINTER
       SUB N3
       STA RX01
       LDA L        2       GET VARIABLE TO BE DIMENSIONED
       STA 3
       LDA S        3
       CAB N36              CHECK FOR $ ARRAY
       BRU *+7              NOT $
       ...
Ref: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf 最初, BASIC 编程语言中的 "DIM" 关键字用于声明数组变量。随着具有更近期实现的版本中添加了为变量指定类型的可能性,它后来被用于声明各种类型的变量。

15

定义一个变量,基本上是告诉编译器在某个时刻你将需要这种类型的变量。


14

它代表维度,但通常被读作“创建变量”或“为此分配空间”。


10

7

早期的DIM为数组保留了内存,当内存有限时,您需要小心地使用它。我曾经在1981年用48Kb RAM的TRS-80 Model III上编写了一个BASIC程序。如果不通过更改DIM语句来减少数组大小,它将无法在16Kb RAM的类似机器上运行。


7

DIM代表内存声明 DIM x As New Integer 在内存中创建了一个空间,用于存储变量x


4

Dimension是变量的一种类型,这个词可以让你在Visual Basic中声明(或“告诉”Visual Basic),你正在设置一个变量。


3

当使用修饰符- Public、Protected、Friend、Protected Friend、Private、Shared、Shadows、Static、ReadOnly 等时,Dim 关键字是可选的。 例如:Static nTotal As Integer

对于引用类型,我们必须使用 new 关键字来创建类或结构体的新实例。例如:Dim lblTop As New System.Windows.Forms.Label

当您将 Option Infer 设置为 On 时,可以在不使用数据类型的情况下使用 Dim 语句。在这种情况下,编译器从变量的初始化表达式的类型中推断出其数据类型。 例如:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

上述语句等同于- Dim nExpVar As Integer

欢迎来到StackOverflow,并感谢您的回答,但是它并没有对其他众多给出相同答案的回答进行扩展。 - Deanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接