- ベストアンサー
次のDelphiプログラムで
type TStrArray = class private fStrList: TStringList; procedure SetItem(index: Integer; const Value: string); function GetItem(index: Integer): string; public constructor Create; destructor Destroy; override; procedure Clear; function GetCount: Integer; procedure Push(Item: string); function Pop: string; procedure UnShift(Item: string); function Shift: string; property Items[index: Integer]: string read GetItem write SetItem; default; end; TStrArray = class は TStrArray = class(TObject) としても同じでしょうか? GetItem write SetItem; default; の「default;」の意味を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
もちろん、デフォルトプロパティにできるのはクラス内で1つだけです。 格納指定子のdefaultはいくらでも使えます。
その他の回答 (3)
- paspas
- ベストアンサー率52% (47/90)
#2です。 >TStrArray = class >は >TStrArray = class(TObject) >としても同じでしょうか? >ちがいます。 >単にclassとする場合は継承しているものはありません。 >class(TObject)の場合は、TObjectを継承することができます。 訂正します。 classのみの場合は、暗黙的にTObjectからの派生となります。失礼いたしました。
- paspas
- ベストアンサー率52% (47/90)
>TStrArray = class >は >TStrArray = class(TObject) >としても同じでしょうか? ちがいます。 単にclassとする場合は継承しているものはありません。 class(TObject)の場合は、TObjectを継承することができます。 >GetItem write SetItem; default; >の「default;」の意味を教えてください default 指令の後には,プロパティと同じ型の定数を指定しなければなりません。次に例を示します。 property Tag: Longint read FTag write FTag default 0; default指令は格納指定子と呼ばれます。格納指定子はプログラムの動作に影響を及ぼすものではなく,実行時型情報(RTTI)の管理方法を制御するものです。具体的には,格納指定子により,パブリッシュプロパティの値をフォーム(.DFM)ファイルに保存するかどうかが決まります。
お礼
ありがとうございます。 defaultの右が0の時には省略できるのでしょうか?
class の後ろを省略すると TObject からの派生なので多分同じ。 配列プロパティ定義に default をつけると、そのクラスのデフォルトプロパティになる。 デフォルトプロパティにすると省略形でアクセスできる。 この場合 StrArray.Items[index] を StrArray[index] と書ける。 文法レベルのことなのでヘルプにもっと詳しく書いてあると思います。
お礼
ありがとうございました。 defaultに指定できるのはクラス内で1つだけなのでしょうか?
お礼
ありがとうございます。