- 題名: 多次元配列クラスの作成について
- 日時: 2009/06/13 14:38:03
- ID: 24738
- この記事の返信元:
- (なし)
- この記事への返信:
- [24741] Re[1]: 多次元配列クラスの作成について2009/06/13 15:25:13
- ツリーを表示
■No24738に返信(すらりんさんの記事)
> 多次元配列相当のクラス
よく分からないけど使いたいようなクラスではないね。
クラスの2次元配列ではなぜダメなの?
Private Mans(10, 5) As MemberNN
Private Sub test
For row As Integer = 0 To Mans.GetLength(0) - 1
For col As Integer = 0 To Mans.GetLength(1) - 1
Mans(row, col) = New MemberNN(row, "N" & col.ToString, Today())
Next
Next
End Sub
ArrayList の配列ではなぜダメなの?
Private aryTest(5) As ArrayList
> 他掲示板にて聞いたやり方を元に
なぜその掲示板で続けないの?今まで貴方が考えてきたことを
ボクは全く知らないわけです。一から聞き出さないといけないの?
せめてリンクくらい貼ったら?
>Azuleanさん
どうもありがとうございますm(_ _)m
HashTableを使うやり方で意図した使い方ができるようになりました。
N1(Integer),N2(Date)とし、N2で使用していたString型をHashTableのKeyとして扱うやり方で作ってみました。
これまでN1〜N3のメンバのうち、1つをユニークとして扱う方法で考えていたので、String型の"NX"を当てはめてみました。
(Key=Integer型でもOKでしたが汎用的につかえそうなため実験してみました)
大変勉強になりました。ありがとうございます。
------------------------------------------------------------------------------------
Public Class Test
Public Shared Sub test2()
Dim hsTbl As New Hashtable
Dim Man1 As New MemberNN(1, Today()) 'Key="KEY1"とする
Dim Man2 As New MemberNN(2, Today()) 'Key="KEY2"とする
Dim Man3 As New MemberNN(6, Today()) 'Key="KEY3"とする
Dim Man4 As New MemberNN(8, Today()) 'Key="KEY4"とする
Try
hsTbl.Add("KEY1", Man1) 'hsTbl("KEY1")に{1,Today()}をAdd
hsTbl.Add("KEY2", Man2) 'hsTbl("KEY2")に{2,Today()}をAdd
Console.WriteLine(String.Format("hsTbl.Count:{0}", hsTbl.Count))
Console.WriteLine(String.Format("hsTbl(""KEY1""):{1}N1={0}{1}N2={2}", hsTbl("KEY1").N1, ControlChars.CrLf, hsTbl("KEY1").N2))
Console.WriteLine(String.Format("hsTbl(""KEY2""):{1}N1={0}{1}N2={2}", hsTbl("KEY2").N1, ControlChars.CrLf, hsTbl("KEY2").N2))
'Containsメソッド使用で追加
If Not hsTbl.Contains("KEY4") Then
'KEY4は存在しないためここで追加
hsTbl.Add("KEY4", Man4) 'hsTbl("KEY4")に{2,Today()}をAdd
Console.WriteLine(String.Format("hsTbl(""KEY4""):{1}N1={0}{1}N2={2}", hsTbl("KEY4").N1, ControlChars.CrLf, hsTbl("KEY4").N2))
End If
'Containsメソッドテスト出力
If hsTbl.Contains("KEY3") Then
Console.WriteLine("MAN3はAddされておらずここは通らない")
ElseIf hsTbl.Contains("KEY1") Then
Console.WriteLine("MAN1は既にAdd済みのためここは通る")
End If
'Clearメソッド確認
hsTbl.Clear()
Console.WriteLine(String.Format("hsTbl.Count:{0}", hsTbl.Count))
Catch ex As Exception
Throw
Finally
If Not hsTbl Is Nothing Then hsTbl = Nothing
Man1 = Nothing : Man2 = Nothing : Man3 = Nothing : Man4 = Nothing
End Try
End Sub
------------------------------------------------------------------------------------
Public Class MemberNN
Private _n1 As String
Private _n2 As Date
Sub New(ByVal _nn1 As String, ByVal _nn2 As Date)
_n1 = _nn1 : _n2 = _nn2
End Sub
Public ReadOnly Property N1() As String
Get
Return _n1
End Get
End Property
Public ReadOnly Property N2() As Date
Get
Return _n2
End Get
End Property
End Class
End Class
------------------------------------------------------------------------------------
(出力)
hsTbl.Count:2
hsTbl("KEY1"):
N1=1
N2=2009/06/14 0:00:00
hsTbl("KEY2"):
N1=2
N2=2009/06/14 0:00:00
hsTbl("KEY4"):
N1=8
N2=2009/06/14 0:00:00
MAN1は既にAdd済みのためここは通る
hsTbl.Count:0
------------------------------------------------------------------------------------
...なんかグレーになって戻らなくなってしまった^^;
すみません。
分類:[.NET]
2009/06/13(Sat) 18:41:26 編集(投稿者)