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


Answers:


318

Dim最初(在BASIC中)代表Dimension,因为它用于定义数组的尺寸。

(BASIC的最初实现是Dartmouth BASIC,它是FORTRAN的后代,其中阐明了DIMENSION。)

如今,Dim用于定义任何变量,而不仅仅是数组,因此其含义已不再直观。


64
一点背景可能会有所帮助。在basic的早期发行版中,唯一需要声明的变量是数组。关键字“ Dim”用于设置此数组的尺寸。
克里斯·辛普森

26
我记得在80年代初阅读过gw-basic编程指南,并且明确记得它解释了DIM的含义,即“在内存中声明”。从'64阅读《达斯茅斯基础指南》时,有LET和READ语句分配了变量及其值,'68以后的版本中包含了DIM,实际上它用于数组。bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris 2012年

4
要记住的一件事是,在早期语言开发中,重载关键字具有多种含义是很常见的。因为在原始的Basic中,“ Dim”已经是用于声明数组变量的关键字,所以该关键字已扩展为包括声明所有变量。避免引入new关键字是出于多种原因,其中之一是他们不想破坏已经使用new关键字作为变量名的现有程序。今天,我们拥有更先进的解析技术和更快的计算机,我们看不到这些限制。
zumalifeguard 2014年

3
例如,在更高版本的Basic(例如Visual Basic)中,类型和变量可以是相同的名称。一个重载过多的关键字的很好的例子是C ++中的“静态”。它在不同的上下文中意味着不同的事物。
zumalifeguard 2014年

对于那些看待链接的出色BASIC手册@RandyMorris的人,第一个对DIM的引用是在第21页,或者是PDF本身的第26页。更正式的定义在PDF本身的第37或41页上。
John Cummings

120

Dim 具有不同的含义。

我已经找到了有关Dim含义“在内存中声明”的参考,更相关的参考是在Oracle 上发布的Dim Statement上的文档,该文档是Siebel VB语言参考的一部分。当然,您可能会争辩说,如果不在内存中声明变量,该怎么办?考虑到如何使用,也许“在模块中声明”是一个很好的选择Dim

在我看来,“在内存中声明”实际上是一个助记符,其创建目的是使它更易于学习使用Dim。我认为“在内存中声明”是更好的含义,因为它描述了该语言在当前版本中的功能,但这不是正确的含义。

实际上,Basic的起源Dim仅用于声明数组。对于常规变量,未使用任何关键字,而是从其名称推断出其类型。例如,如果变量的名称以结尾,$则它是一个字符串(例如,甚至在VB6以下的方法名称中,您都可以看到它Mid$)。因此,您Dim仅用于为数组赋予尺寸ReDim调整数组大小的通知)。


真的,这很重要吗?我的意思是,它是一个关键字,在人工语言中具有其含义。它不必是英语或任何其他自然语言的单词。因此,这可能意味着您想要什么,而最重要的是它可以工作。

无论如何,那不是完全正确的。因为BASIC是我们文化的一部分,所以我希望了解它为什么如此成为现实,这将有助于改善我们对世界的看法。


我坐在计算机旁,渴望帮助保留似乎已消失的这一文化小片段,取而代之的是我们对它的猜测。因此,我从1998版本中挖掘了当前CD和旧CD中的MSDN。我还搜索了旧版QBasic [必须使用DOSBox]的文档,并设法获得了Darthmouth手册,所有这些都找到了他们的谈论方式Dim。让我感到失望的是,他们没有说什么Dim代表什么,而只是说它是如何使用的。

但是,在我的希望渺茫之前,我设法找到了《BBC微型计算机系统使用指南》(该指南声称是1984年的,我不想对此表示怀疑)。BBC微型计算机使用了BASIC的一种变体,称为BBC BASIC,在文档中对此进行了描述。即使,它没有说什么Dim代表什么,而是说(第104页):

...您可以标注N $的大小,以具有所需的尽可能多的条目。例如,DIM N $(1000)将创建一个字符串数组,该字符串数组用于容纳1000个不同的名称。

正如我所说的,它并没有说Dim代表了尺寸,但作为证据表明关联DimDimension在编写文档时常见的事。

现在,稍后(在第208页),我得到了一个有意义的惊喜,描述DIM关键字的部分的标题(注意:未在目录中列出)说:

数组的DIM维

因此,我没有得到“ Dim代表...”的名言,但我想很明显,任何能够阅读这些文档的体面的人都会认为这Dim意味着维度。


怀着新的希望,我决定搜索如何Dim选择。同样,我没有找到关于该主题的信息,但仍然能够找到明确的报价:

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

您可以在True BASIC inc的网页上找到《True BASIC在线用户指南》中的内容,该公司由BASIC的合著者Thomas Eugene Kurtz创建。


因此,实际上Dim是的简写DIMENSION,是的。那是以前在FORTRAN中存在的,因此很可能是如Patrick McDonald在回答中所说的那样,被FORTRAN的影响所选择的。


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

1
我也听到过“在内存中声明”。
jocull 2012年

“真的,这很重要吗?” 被低估的笑话。我现在也要向人们坚持,这Dim实际上是代表的意思
雅各布·斯塔姆

30

Dimension的缩写,因为它最初在BASIC中用于指定数组的大小。

DIM —(尺寸的缩写)定义数组的大小

参考: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 $
       ...

参考:http : //dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

后来,在较新的实现中增加了为变量指定类型的可能性时,它用于声明各种变量。


15

定义变量的尺寸,基本上,您是在告诉编译器某个时候需要这种类型的变量。




7

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


6

早在DIM为阵列保留内存时,当内存有限时,您必须小心使用它。我曾经(在1981年)用48Kb RAM在TRS-80 Model III上编写了一个BASIC程序。除非我通过更改DIM语句减小阵列大小,否则它将无法在具有16Kb RAM的类似机器上运行


4

Dimension的缩写。这是一种变量。您声明(或“告诉” Visual Basic)正在使用此单词设置变量。


3

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.