【问题标题】:what does underscore mean in Delphi4Delphi4中的下划线是什么意思
【发布时间】:2009-09-25 11:57:37
【问题描述】:

我在代码中遇到以下情况。

_name1
_name2
smeEGiGross:  

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

【问题讨论】:

  • 你没有在代码中遇到过。它在语法上无效。请复制粘贴真实代码。

标签: delphi delphi-4


【解决方案1】:

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

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

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

【讨论】:

  • 是的。我还在变量名中看到了双下划线。
  • @phoenix,+1,但是您忘记了可以添加将保留字转换为标识符的 & 构造:&if、&then。
  • 我不会说在 Delphi 中使用下划线开始变量名是常见的做法。 c 和 c++ 可能
  • edn.embarcadero.com/article/10280 读起来很有趣,但即使是 Borland 也并不总是遵循他们自己的指导方针。
  • 全局变量的下划线开头。
【解决方案2】:

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

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

更新:

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

【讨论】:

    【解决方案3】:

    补充凤凰的答案:

    * 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 语法更面向文本(开始、结束或和),但下划线看起来有点奇怪,因为您不希望它们在那里。

    【讨论】:

    • 感谢@gamecat 提供此信息。
    【解决方案4】:

    它经常用于作用域。

    我所有的私有变量都以 _ 开头,这在 C#/C++ 中比较常见。

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

    【讨论】:

      【解决方案5】:

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 2015-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        相关资源
        最近更新 更多