【发布时间】:2009-09-25 11:57:37
【问题描述】:
我在代码中遇到以下情况。
_name1
_name2
smeEGiGross:
一般来说,_name1 下划线在 Delphi 4 中是什么意思?
【问题讨论】:
-
你没有在代码中遇到过。它在语法上无效。请复制粘贴真实代码。
我在代码中遇到以下情况。
_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 成员可能是最明显的例子。
我自己采用了这个约定,例如,如果我声明一个通过访问器函数通过单元接口公开的单元实现变量,我将使用下划线前缀命名该变量。在那种例子中它不是绝对必要的,但它可以作为我自己的文档(以及任何其他阅读我的代码的人都知道约定,这从上下文中是不言而喻的)。
另一个例子是当我有一个函数指针,它可以根据运行时条件引用不同的函数,所以指针可能引用的实际函数不是直接调用而是打算通过函数指针调用.
所以就我自己而言,我将其用作警告/提醒......请谨慎行事,您不应直接引用此符号。
【讨论】: