Delphiのクラスを理解する(12)-深い属性[1]-先に復習する

1434 ワード

属性については、配列属性、デフォルト属性、class属性など、多くの話題がある.
先に述べた属性をまとめましょう.
TMyClass = class(TObject)
  private
    FName: string;
    procedure SetName(const Value: string);
  published
    property Name: string read FName write SetName;
  end;

 
 
 
 
 

 

 
  
1、属性はpropertyで定義する.
2、read、writeの2つのキーワードは少なくとも1つ存在し、1つだけが読み取り専用属性または書き込み専用属性になった場合.
3、属性名の後にもタイプ(組み込みタイプまたは定義前のタイプ)を指定し、アクセスのタイプは一致しなければならない.
4、属性が使用するフィールドと方法は必ず属性の前に宣言しなければならない.
5、属性読み取り(read)が方法である場合、この方法は必ず関数であり、戻り値は属性タイプと一致する.
属性が非配列属性の場合、この関数はパラメータなし、例えばfunction GetName:string;
6、属性書き(write)が方法(一般的にはフィールドではない)であれば、この方法は必ずプロセスである.
属性が非配列属性の場合、このプロセスにはパラメータが1つしかない必要があります.パラメータタイプは属性と一致する必要があります.パラメータは値を伝達する必要があります.
例えば、procedure SetName(s:string);またはprocedure SetName(const s:string);
7、属性呼び出しの方法は虚方法または動的方法ではない.リロード方法ではありません.
8、属性がpublished領域にある場合、その呼び出し方法はデフォルトのregister呼び出し規則しか使用できない.
9、属性は一般的にpublished区に置かれ、属性が公開されていなければ属性の意味を失う.
10、カスタムクラスがRTTIを必要としない場合、public領域に属性を置くほうが節約できるかもしれません(個人的には).
11、属性の読み書きの変数あるいは方法は一般的にprivate区に置いて、すべて公開したら属性を使う必要はありません;
12、イベント属性の読み書きは方法でなければならず、変数ではない.
13、属性はただ1つの橋で、それはポインタ(その読み書きの変数と方法はポインタがある)がなくて、目的はアクセスを便利にしてアクセス制限を提出することです;
14、DelphiのIDEは、属性を書くのに非常に便利なショートカットキーを提供しています.例えば、
入力:property Name:string;次にCtrl+Shift+C...わあ!
---属性は奇妙なアイデアで、読み書き属性は読み書き構造のように便利です.しかし、属性のルールはたくさんありますが、これは一般的な属性の法則にすぎません.