【发布时间】:2010-11-05 05:34:54
【问题描述】:
Dim 在 Visual Basic 中代表什么?
【问题讨论】:
标签: vb6 language-design basic
Dim 在 Visual Basic 中代表什么?
【问题讨论】:
标签: vb6 language-design basic
Dim 最初(在 BASIC 中)代表 Dimension,因为它用于定义数组的维度。
(BASIC 的原始实现是 Dartmouth BASIC,它是 FORTRAN 的后裔,其中 DIMENSION 是拼写出来的。)
现在,Dim 被用来定义任何变量,而不仅仅是数组,所以它的含义不再直观。
【讨论】:
Dim 被赋予了不同的含义。
我找到了关于Dim 的参考资料,意思是“在内存中声明”,更相关的参考资料是Dim Statement 上作为Siebel VB 语言参考的一部分发布的Oracle 的文档。当然,你可能会争辩说,如果你不声明内存中的变量,你在哪里做呢?考虑到Dim 的使用方式,也许“在模块中声明” 是一个不错的选择。
在我看来,“Declare In Memory”实际上是一个助记符,旨在让Dim 更易于学习使用。我认为“Declare in Memory”的含义更好,因为它描述了它在当前版本的语言中的作用,但这不是正确的含义。
事实上,Basic 的起源Dim 仅用于声明数组。对于常规变量,没有使用关键字,而是从它们的名称中推断出它们的类型。例如,如果变量的名称以 $ 结尾,那么它就是一个字符串(即使在 VB6 之前的方法名称中也可以看到这一点,例如 Mid$)。因此,您使用 Dim 只是为数组提供 维度(注意 ReDim 调整数组大小)。
真的,重要吗?我的意思是,它是一个关键字,它在人工语言中具有其含义。它不必是英语或任何其他自然语言中的单词。所以它可以意味着任何你想要的,重要的是它有效。
无论如何,这并不完全正确。由于 BASIC 是我们文化的一部分,理解它为什么会变成现在这样——我希望——将有助于改善我们对世界的看法。
我坐在我的电脑前,希望帮助保护我们这片似乎已经丢失的文化,取而代之的是我们对它是什么的猜测。因此,我从 1998 年版本中挖掘了 MSDN 的当前和旧 CD。我还搜索了旧 QBasic [不得不使用 DOSBox] 的文档并设法获得了一些达斯茅斯手册,所有这些都是为了找到他们如何谈论 Dim。令我失望的是,他们没有说明Dim 代表什么,只说明它是如何使用的。
但在我的希望渺茫之前,我设法找到了这个BBC Microcomputer System Used Guide(声称是 1984 年的,我不想怀疑它)。 BBC 微型计算机使用了一种称为 BBC BASIC 的 BASIC 变体,并在文档中进行了描述。尽管它没有说明Dim 代表什么,但它说(在第 104 页):
...您可以为 N$ 设置维度,使其拥有任意数量的条目。为了 例如,DIM N$(1000) 将创建一个空间为 1000 的字符串数组 不同的名字。
正如我所说,它并不是说 Dim 代表维度,而是证明将 Dim 与 Dimension 关联是在撰写该文档时很常见的事情。
现在,我后来得到了一个惊喜(在第 208 页),描述 DIM 关键字的部分的标题(注意:内容中没有列出)说:
数组的 DIM 维度
所以,我没有得到“Dim 代表...”的引用,但我想很明显,任何能够阅读这些文档的体面的人都会认为 Dim 表示维度。
带着新的希望,我决定搜索Dim是如何被选中的。同样,我没有找到有关该主题的帐户,但我仍然能够找到明确的报价:
在使用数组之前,必须在 DIM(维度)语句中定义它。
您可以在 True BASIC inc 的网页上找到 True BASIC Online User's Guides 的一部分,该公司由 BASIC 的合著者 Thomas Eugene Kurtz 创立。
所以,实际上,Dim 是 DIMENSION 的简写,是的。之前在 FORTRAN 中存在,所以很可能是受 FORTRAN 的影响而将其选为Patrick McDonald said in his answer。
Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
【讨论】:
Dim 的真正含义
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
后来它被用来声明各种变量,在最近的实现中添加了为变量指定类型的可能性。
【讨论】:
标注一个变量,基本上你是在告诉编译器你将在某个时候需要一个这种类型的变量。
【讨论】:
它代表维度,但通常读作“创建变量”或“为此分配空间”。
【讨论】:
变量声明。最初,它是“维度”的缩写,在编程中(在这个特定关键字之外)没有任何重要程度使用的术语。
http://in.answers.yahoo.com/question/index?qid=20090310095555AANmiAZ
【讨论】:
过去 DIM 为阵列保留内存,当内存有限时,您必须小心使用它。我曾经(在 1981 年)用 48Kb RAM 在 TRS-80 Model III 上编写了一个 BASIC 程序。在我通过更改 DIM 语句减小数组大小之前,它不会在具有 16Kb RAM 的类似机器上运行
【讨论】:
DIM 代表内存中的声明 DIM x 作为新整数 在内存中创建一个存储变量 x 的空间
【讨论】:
维度的缩写。它是一种变量。你声明(或“告诉”Visual Basic)你正在用这个词设置一个变量。
【讨论】:
Dim 关键字是可选的,当我们将它与修饰符一起使用时 - Public、Protected、Friend、Protected Friend、Private、Shared、Shadows、Static、ReadOnly 等。
例如- Static nTotal As Integer
对于引用类型,我们必须使用 new 关键字来创建类或结构的新实例。例如Dim lblTop As New System.Windows.Forms.Label.
Dim 语句可以在没有数据类型的情况下使用,当您设置 选项推断为开启。 在这种情况下,编译器从变量初始化表达式的类型推断出变量的数据类型。 示例:
Option Infer On
Module SampleMod
Sub Main()
Dim nExpVar = 5
以上语句等价于-Dim nExpVar As Integer
【讨论】: