Linux(mono)でVB、インデックス付きプロパティ

Animalクラスの名前(Name)プロパティですが、名前って一つじゃない場合もありますね。
あだ名もありますし。
今回は、プロパティをインデックス付きに変更してみます。
元のプロパティ。

 10         Private _name As String
 11         Public Property Name() As String
 12                 Get
 13                         Return _name
 14                 End Get
 15                 Set(ByVal value As String)
 16                         If value <> "" Then
 17                                 _name = value
 18                         Else
 19                                 WriteLine("名前をつけてください")
 20                         End If
 21                 End Set
 22         End Property

インデックス付きに変更後。

 10         Private _name(2) As String
 11         Public Property Name(idx As Integer) As String
 12                 Get
 13                         Return _name(idx)
 14                 End Get
 15                 Set(ByVal value As String)
 16                         If value <> "" Then
 17                                 _name(idx) = value
 18                         Else
 19                                 WriteLine("名前をつけてください")
 20                         End If
 21                 End Set
 22         End Property

使用するメソッドも変更します。インデックスの数分処理するように、For Eachを使ってます。

 24         Sub WhatIsThis()
 25                 WriteLine( _classname & "です")
 26                 For Each m As String in _name
 27                         WriteLine( "名前は" & m & "と言います")
 28                 Next
 29         End Sub

名前を3つつけてみました。

 32 Public Class TestClass
 33         <STAThread()> _
 34         Shared Sub Main()
 35                 Dim animal As New Animal()
 36                 animal.Name(0) = "動物ちゃん"
 37                 animal.Name(1) = "動物くん"
 38                 animal.Name(2) = "動物さん"
 39                 animal.WhatIsThis()
 40         End Sub
 41
 42 End Class

ビルドして実行。

takk@deb9:~/vbtest$ vbnc test.vb

~省略~

takk@deb9:~/vbtest$ mono test.exe
哺乳類です
名前は動物ちゃんと言います
名前は動物くんと言います
名前は動物さんと言います
takk@deb9:~/vbtest$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA