• ベストアンサー

次の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;」の意味を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#9119
noname#9119
回答No.4

もちろん、デフォルトプロパティにできるのはクラス内で1つだけです。 格納指定子のdefaultはいくらでも使えます。

keyguy
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • paspas
  • ベストアンサー率52% (47/90)
回答No.3

#2です。 >TStrArray = class >は >TStrArray = class(TObject) >としても同じでしょうか? >ちがいます。 >単にclassとする場合は継承しているものはありません。 >class(TObject)の場合は、TObjectを継承することができます。 訂正します。 classのみの場合は、暗黙的にTObjectからの派生となります。失礼いたしました。

  • paspas
  • ベストアンサー率52% (47/90)
回答No.2

>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)ファイルに保存するかどうかが決まります。

keyguy
質問者

お礼

ありがとうございます。 defaultの右が0の時には省略できるのでしょうか?

noname#9119
noname#9119
回答No.1

class の後ろを省略すると TObject からの派生なので多分同じ。 配列プロパティ定義に default をつけると、そのクラスのデフォルトプロパティになる。 デフォルトプロパティにすると省略形でアクセスできる。 この場合 StrArray.Items[index] を StrArray[index] と書ける。 文法レベルのことなのでヘルプにもっと詳しく書いてあると思います。

keyguy
質問者

お礼

ありがとうございました。 defaultに指定できるのはクラス内で1つだけなのでしょうか?

関連するQ&A

専門家に質問してみよう