1

我在代码中遇到以下内容。

_name1
_name2
smeEGiGross:  

一般来说,_name1下划线在 Delphi 4 中是什么意思?

4

5 回答 5

5

我认为用下划线开始变量名只是一种常见的做法。

Delphi 中变量(和组件)名称的规则:

  • 名称可以是任意长度,但 Delphi 只使用前 255 个字符。
  • 第一个字符必须是字母或下划线,而不是数字。
  • 您不能使用任何特殊字符,例如问号 (?),但可以使用下划线 (_)。
  • 变量名中不允许有空格区域。
  • 保留字(如 begin、end、if、program)不能用作变量。
  • Delphi 不区分大小写——是否使用大写字母都无关紧要。只要确保变量或组件的使用方式在整个程序中是一致的。
于 2009-09-25T11:59:34.373 回答
5

这是一种通过名称来帮助确定变量范围的约定,例如私有类成员。原作者可能也使用 C++。

在 Delphi 中,我更喜欢在字段前面加上“F”,在方法参数前面加上“a”(参数),在局部变量前面加上“l”。

更新:

您可能会看到下划线的另一个地方是在使用 WSDLImp 或 TLBImp 生成的代码中的某些标识符之后,以避免与现有的 Delphi 标识符混淆。例如,除非您另外指定,否则“Name”将重命名(没有双关语)为“Name_”。

于 2009-09-25T12:28:46.840 回答
4

添加到凤凰的答案:

* You can use reserved words as identifiers, but you must add a & sign: &then, 
  &unit.
I only use this if another name ís not apropriate.

我将前导下划线与 C/C++ 相关联,而不是与 Delphi 相关联。C 语法更加面向字符(如 {、}、|| 和 &&),因此下划线非常适合。虽然 Delphi/Pascal 语法更多地面向文本(开始、结束、或、和),但下划线看起来有点奇怪,因为您不希望它们在那里。

于 2009-09-25T12:24:26.057 回答
4

它经常用于范围。

我在开头用 _ 声明了所有私有变量,这在 C#/C++ 中更常见。

这是为了可读性,并不一定意味着什么。

于 2009-09-25T13:49:06.447 回答
2

我无法说出您脑海中代码的作者在想什么,但下划线前缀具有相当公认的与 COM 相关的约定。

COM 接口中具有下划线前缀的成员在默认情况下会(或曾经)被接口浏览器/检查器隐藏(例如 VB 的库浏览器等)。这用于在必要时发布成员但不打算直接使用时使用。

IUnknown接口的_AddRef_Release成员可能是最明显的例子。

我自己采用了这个约定,例如,如果我声明一个通过访问器函数通过单元接口公开的单元实现变量,我将使用下划线前缀命名该变量。在那种示例中,它并不是绝对必要的,但它可以作为我自己的文档(以及任何其他阅读我的代码的人都知道约定,这从上下文中是不言而喻的)。

另一个例子是当我有一个函数指针,它可以根据运行时条件引用不同的函数,所以指针可能引用的实际函数不是要直接调用,而是要通过函数指针调用。

因此,就我自己而言,我将其用作警告/提醒......请谨慎行事,您不应直接引用此符号。

于 2009-09-27T03:30:58.707 回答