1

私はコードで次のことに出くわします。

_name1
_name2
smeEGiGross:  

一般に、_name1Delphi 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」というプレフィックスを付けることを好みます。

アップデート:

既存の Delphi 識別子との混同を避けるために、WSDLImp または TLBImp で生成されたコード内の特定の識別子の後にアンダースコアが表示される場合があります。たとえば、特に指定しない限り、"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.

先頭のアンダースコアは、Delphi ではなく C/C++ に関連付けます。C 構文はより文字指向 ({、}、||、&& など) であるため、アンダースコアは完全に適合します。Delphi/Pascal の構文はよりテキスト指向 (begin、end、or、および) ですが、アンダースコアは予想外のように少し奇妙に見えます。

于 2009-09-25T12:24:26.057 に答える
4

スコープに定期的に使用されます。

私はすべてのプライベート変数を先頭に _ を付けて宣言していますが、これは C#/C++ でより一般的です。

これは読みやすさのためであり、必ずしも何の意味もありません。

于 2009-09-25T13:49:06.447 に答える
2

あなたが念頭に置いているコードの作成者が何を考えていたかはわかりませんが、アンダースコアのプレフィックスには、COM に関してかなりよく知られている規則があります。

アンダースコア プレフィックスを持つ COM インターフェイスのメンバーは、VB のライブラリ ブラウザーなどのインターフェイス ブラウザー/インスペクターによって既定で非表示になっています (または非表示でした)。

IUnknownインターフェイスの_AddRefおよび_Releaseメンバーは、おそらくこれの最も明白な例です。

私はこの規則を自分で採用しました。たとえば、アクセサー関数を介してユニット インターフェイスを介して公開されるユニット実装変数を宣言する場合、変数にアンダースコア プレフィックスを付けて名前を付けます。この種の例では厳密に必要というわけではありませんが、私自身 (および、コンテキストからかなり自明である規則を認識している私のコードを読んでいる他の人) のドキュメントとして機能します。

もう 1 つの例は、実行時の条件に応じてさまざまな関数を参照する可能性のある関数ポインターがある場合です。ポインターが参照する実際の関数は、直接呼び出されることを意図したものではなく、関数ポインターを介して呼び出されることを意図したものです。

自分自身で言えば、警告/リマインダーとして使用します....このシンボルを直接参照することは期待されていないことに注意して進めてください。

于 2009-09-27T03:30:58.707 に答える