- 題名: 引数があるプロパティの取得
- 日時: 2008/07/22 11:58:43
- ID: 22478
- この記事の返信元:
- (なし)
- この記事への返信:
- [22479] Re[1]: 引数があるプロパティの取得2008/07/22 12:16:29
- [22480] Re[1]: 引数があるプロパティの取得2008/07/22 12:26:02
- [22482] Re[1]: 引数があるプロパティの取得2008/07/22 13:53:49
- ツリーを表示
■No22478に返信(shimさんの記事)
> Public Property Data(ByVal B As Integer) As String
> をC#で実現するにはどのようなコードを書けばよろしいでしょうか?
私がよくやるのは,中間的なコレクションクラスを用意する方法です。
そいつがインデクサを持つことによって,名前付きプロパティを擬似的に実装することができます。
これをやると,そもそもデータをどちらが持つのか,という問題が出てきたりはしますが……。
public class Foo
{
private string[] _data;
public class StringCollection // 中間コレクション。IEnumerableなどは好みによって。
{
private readonly Foo _foo; // コレクションの持ち主
internal StringCollection (Foo foo)
{
_foo = foo;
}
public int Count
{
get
{
return _foo._data.Length;
}
}
public string this [int index]
{
get
{
return _foo._data[index];
}
}
}
public StringCollection Data
{
get
{
return new StringCollection(this); // 毎回作るのはコストがかかるので,別に用意したいところ。
}
}
}
分類:[.NET]
[VB.NETコード]
Private A() As String
Public Property Data(ByVal B As Integer) As String
Get
Return A(B)
End Get
End Property
をC#で実現するにはどのようなコードを書けばよろしいでしょうか?