296

Dim在 Visual Basic 中代表什么?

4

10 回答 10

338

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

(BASIC 的原始实现是Dartmouth BASIC,它源自 FORTRAN,其中 DIMENSION 被拼写出来。)

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

于 2009-06-23T16:01:41.253 回答
126

Dim有不同的含义归因于它。

我找到了有关“Declare In Memory”Dim含义的参考资料,更相关的参考资料是关于Dim Statement的文档,该文档是作为 Siebel VB 语言参考的一部分发布的 Oracle。当然,你可能会争辩说,如果你不声明内存中的变量,你在哪里做呢?考虑到如何使用,也许“在模块中声明”是一个很好的选择。Dim

在我看来,“Declare In Memory”实际上是一个助记符,旨在让学习如何使用变得更容易Dim。我认为“在内存中声明”是一个更好的含义,因为它描述了它在当前版本的语言中的作用,但这不是正确的含义。

事实上,Basic 的起源Dim只是用来声明数组。对于常规变量,没有使用关键字,而是从它们的名称中推断出它们的类型。例如,如果变量的名称以 then 结尾,$那么它就是一个字符串(即使在 VB6 之前的方法名称中,您也可以看到这一点,例如Mid$)。因此,您Dim仅用于为数组提供维度(注意ReDim调整数组的大小)。


真的,重要吗?我的意思是,它是一个关键字,它在人工语言中具有其含义。它不必是英语或任何其他自然语言中的单词。所以它可能意味着你想要的任何东西,重要的是它有效。

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


我坐在我的电脑前,希望帮助保护我们文化的这一小部分,它似乎已经丢失,取而代之的是我们对它是什么的猜测。因此,我从 1998 年版本中挖掘了 MSDN 的当前和旧 CD。我还搜索了旧 QBasic [不得不使用 DOSBox] 的文档并设法获得了一些达斯茅斯手册,所有这些都是为了找到他们如何谈论Dim. 令我失望的是,他们没有说它Dim代表什么,只说它是如何使用的。

但在我的希望渺茫之前,我设法找到了这个BBC 微型计算机系统使用指南(声称是 1984 年的,我不想怀疑它)。BBC 微型计算机使用了一种称为 BBC BASIC 的 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 中就存在这种情况,因此很可能是受 FORTRAN 的影响,正如Patrick McDonald 在回答中所说的那样


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
于 2010-10-05T01:19:58.460 回答
31

它是 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

后来它被用来声明各种变量,在最近的实现中添加了为变量指定类型的可能性。

于 2009-06-23T16:02:13.783 回答
15

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

于 2009-06-23T16:00:57.790 回答
13

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

于 2009-06-23T16:02:54.047 回答
10

变量声明。最初,它是“维度”的缩写,在编程中(在这个特定关键字之外)没有任何重要程度使用的术语。

http://in.answers.yahoo.com/question/index?qid=20090310095555AANmiAZ

于 2009-06-23T16:01:17.917 回答
7

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

于 2009-10-09T21:05:46.113 回答
7

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

于 2012-01-14T20:12:02.983 回答
4

维度的缩写。它是一种变量。你声明(或“告诉”Visual Basic)你正在用这个词设置一个变量。

于 2012-04-07T08:30:29.403 回答
3

Dim 关键字是可选的,当我们将其与修饰符一起使用时 - Public、Protected、Friend、Protected Friend、Private、Shared、Shadows、Static、ReadOnly 等。例如 -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

于 2015-07-03T20:30:18.453 回答