R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

既定のプロパティは何処へ

僕は、VB6の頃は、規定のプロパティを多用していました。

当時は、規定のプロパティを用いる方法は一般的で、テキストコントロールなどは、コントロールのオブジェクトに直接文字列を渡せば、既定の Text プロパティに格納されました。

僕も当時は直感的にわかりやすいと思って、自分で作成したクラスにも規定のプロパティを設けることが多かったのです。


Dim Obj As MyClass
Set Obj = HogeHoge  'HogeHoge オブジェクトを Obj に代入する。
Obj = "あいうえお"


VB6以前は、上記のように、参照型の変数にオブジェクトを代入する場合は、Set を使う必要がありました。
この規則があるからこそ、規定のプロパティを利用できたともいえるかと思います。

.Netの場合は、以下のように Set を使いません。


[VB]
Dim Obj As MyClass
Obj = HogeHoge  'HogeHoge オブジェクトを Obj に代入する。
Obj.DefaultPropertyValue = "あいうえお"

[C#]
MyClass Obj;
Obj = HogeHoge;  //HogeHoge オブジェクトを Obj に代入する。
Obj.DefaultPropertyValue = "あいうえお"


これを見ると、規定のプロパティが使えなくなってしまった理由もわかりますね。
ただし、インデックスを付加した場合に限っては、以下のようにプロパティ名を省略できます。


MyClass Obj = HogeHoge;
Obj[0] = "あいうえお"
Obj[1] = "あいうえお"


確かに、このような書き方なら、プロパティ名が明示されなくてもわかりやすいですね。
そんな訳で、MyClass を上記のような書き方に対応させるには次のようにします。


Public Class MyClass
  Dim a() As String

  Public Sub New(ByVal count As Integer)
    a = New String(count) {}
  End Sub

  Default Public Property Item(ByVal index As Integer) As String
    Get
      Return a(index)
    End Get
    Set(ByVal Value As String)
      a(index) = Value
    End Set
  End Property
End Class


C# では、

インデクサ

という機能を使います。


Class MyClass
{
  private string[] a;

  public MyClass(int count) {
    a = new String[count];;
  }

  public string this[int index] {
    get {
      return a[index];
    }
    set {
      a[index] = value;
    }
  }
}


インデクサとは言ってみたものの、ちょっと変わったプロパティに見えます。

投稿日時 : 2007年1月24日 14:47

Feedback

# re: 既定のプロパティは何処へ 2007/01/24 14:59 ぽぴ王子

アレですよね、韓国の人で「ポンチャック」とか歌ってた人。

# re: 既定のプロパティは何処へ 2007/01/24 15:17 シャノン

インデクサは既定のプロパティの代用品ではないと思う。
俺はVB6の頃から既定のプロパティを使ったことはありません。

# re: 既定のプロパティは何処へ 2007/01/24 15:19 シャノン

> 韓国の人で「ポンチャック」とか歌ってた人。

それは「イ・パクサ」やっちゅーねん!

…これでおっけーっすか?

# re: 既定のプロパティは何処へ 2007/01/24 15:29 じゃんぬねっと

> ただし、インデックスを付加した場合に限っては、
> 以下のように既定のプロパティを使うことができます。

デフォルト プロパティと、VB6 の既定のプロパティ (_Default) と同一視しないでください。

# re: 既定のプロパティは何処へ 2007/01/24 15:39 R・田中一郎

ぽぴ王子 さん

>アレですよね、韓国の人で「ポンチャック」とか歌ってた人。

レベルの高い話題が繰り広げられている訳ですけれども。

----------------------------------
シャノン さん
じゃんぬさん

表現を変えてみました。

# re: 既定のプロパティは何処へ 2007/01/24 15:39 ぽぴ王子

要するにコレを言いたかったわけですね!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26024&forum=7

> それは「イ・パクサ」やっちゅーねん!
> …これでおっけーっすか?

ありがとうございます(笑)
振ってはみたものの、マイナーな上に結構昔の人なので、どきどきポヤッチオでしたよ(もっと古い)。
こないだタカアンドトシが口走っていたので懐かしく思いました。

# re: 既定のプロパティは何処へ 2007/01/24 15:54 R・田中一郎

思えば、この頃から、じゃんぬねっとさんにはお世話になっていたんだなぁ。
Jねっとさんや、Jったさんや、S人さんにお世話になりながら、W同盟のことも知ったのでした。

# oEILAFLEoqOw 2021/07/03 4:53 https://www.blogger.com/profile/060647091882378654

You must take part in a contest for among the finest blogs on the web. I all advocate this website!

# Amazing a good deal of awesome advice. Www.171charz.com (www.171charz.com) 2021/07/27 5:29 Amazing a good deal off awesome advice. Www.171cha

Amazing a good deal of awesome advice.
Www.171charz.com (www.171charz.com)

# Amazing a good deal of awesome advice. Www.171charz.com (www.171charz.com) 2021/07/27 5:32 Amazing a good deal off awesome advice. Www.171cha

Amazing a good deal of awesome advice.
Www.171charz.com (www.171charz.com)

# Amazing a good deal of awesome advice. Www.171charz.com (www.171charz.com) 2021/07/27 5:35 Amazing a good deal off awesome advice. Www.171cha

Amazing a good deal of awesome advice.
Www.171charz.com (www.171charz.com)

# Amazing a good deal of awesome advice. Www.171charz.com (www.171charz.com) 2021/07/27 5:38 Amazing a good deal off awesome advice. Www.171cha

Amazing a good deal of awesome advice.
Www.171charz.com (www.171charz.com)

# Appreciate it! Loads of information! Samara https://americandental.ru/ (Diana) 2021/08/25 22:06 Appreciate it! Loads of information! Samara https

Appreciate it! Loads of information!

Samara
https://americandental.ru/ (Diana)

タイトル
名前
Url
コメント