- 題名: 多次元配列クラスの作成について
- 日時: 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 編集(投稿者)