我在代码中遇到以下内容。
_name1
_name2
smeEGiGross:
一般来说,_name1
下划线在 Delphi 4 中是什么意思?
我认为用下划线开始变量名只是一种常见的做法。
Delphi 中变量(和组件)名称的规则:
这是一种通过名称来帮助确定变量范围的约定,例如私有类成员。原作者可能也使用 C++。
在 Delphi 中,我更喜欢在字段前面加上“F”,在方法参数前面加上“a”(参数),在局部变量前面加上“l”。
更新:
您可能会看到下划线的另一个地方是在使用 WSDLImp 或 TLBImp 生成的代码中的某些标识符之后,以避免与现有的 Delphi 标识符混淆。例如,除非您另外指定,否则“Name”将重命名(没有双关语)为“Name_”。
添加到凤凰的答案:
* 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 语法更多地面向文本(开始、结束、或、和),但下划线看起来有点奇怪,因为您不希望它们在那里。
它经常用于范围。
我在开头用 _ 声明了所有私有变量,这在 C#/C++ 中更常见。
这是为了可读性,并不一定意味着什么。
我无法说出您脑海中代码的作者在想什么,但下划线前缀具有相当公认的与 COM 相关的约定。
COM 接口中具有下划线前缀的成员在默认情况下会(或曾经)被接口浏览器/检查器隐藏(例如 VB 的库浏览器等)。这用于在必要时发布成员但不打算直接使用时使用。
IUnknown接口的_AddRef和_Release成员可能是最明显的例子。
我自己采用了这个约定,例如,如果我声明一个通过访问器函数通过单元接口公开的单元实现变量,我将使用下划线前缀命名该变量。在那种示例中,它并不是绝对必要的,但它可以作为我自己的文档(以及任何其他阅读我的代码的人都知道约定,这从上下文中是不言而喻的)。
另一个例子是当我有一个函数指针,它可以根据运行时条件引用不同的函数,所以指针可能引用的实际函数不是要直接调用,而是要通过函数指针调用。
因此,就我自己而言,我将其用作警告/提醒......请谨慎行事,您不应直接引用此符号。