クラスのメソッドのカテゴリ分け(?) への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 mitchin  (社会人)
投稿日時
2009/9/22 07:26:42
一例として、自分なら SystemMonitor は名前空間にして Memory をクラスにします。
Label に表示する使用例
個人的には以下のクラスを作ってプログラムや自作DLLから利用しています。
○数値、文字列、日付等の処理を行う静的メソッドを提供するクラス
○判別処理を行う静的メソッドを提供するクラス
○ネットワーク関連の処理を行う静的メソッド・プロパティを提供するクラス
○データベースの処理を行う静的メソッド・プロパティを提供するクラス
これらはすべて静的(Shared)なメソッド・プロパティを提供するクラスなので、
クラスは Public NotInheritable にして、コンストラクタは Private にしています。
Namespace SystemMonitor
#Region " 列挙体 "
''' <summary>容量の単位です。</summary>
''' <remarks></remarks>
Public Enum SizeUnit
B
KB
MB
GB
End Enum
#End Region
''' <summary>メモリ関連の処理を行う静的メソッドを提供するクラスです。このクラスは継承できません。</summary>
''' <remarks></remarks>
Public NotInheritable Class Memory
#Region " プライベートコンストラクタ "
Private Sub New()
End Sub
#End Region
#Region " パブリックメソッド "
''' <summary>指定した単位のメモリの容量を取得します。</summary>
''' <param name="Unit">容量の単位を表す SizeUnit の値の 1 つ。</param>
''' <returns>Unit で表されるメモリの容量。</returns>
''' <remarks></remarks>
Public Shared Function GetMemorySize(ByVal Unit As SizeUnit) As Decimal
Return Convert.ToDecimal(My.Computer.Info.TotalPhysicalMemory / (1024 ^ Unit))
End Function
#End Region
End Class
End Namespace
Label に表示する使用例
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Unit As SystemMonitor.SizeUnit = SystemMonitor.SizeUnit.B
Me.Label1.Text = String.Format("{0:N0}{1}", SystemMonitor.Memory.GetMemorySize(Unit), Unit) '表示例:1,072,480,256B
Unit = SystemMonitor.SizeUnit.KB
Me.Label2.Text = String.Format("{0:N0}{1}", SystemMonitor.Memory.GetMemorySize(Unit), Unit) '表示例:1,047,344KB
Unit = SystemMonitor.SizeUnit.MB
Me.Label3.Text = String.Format("{0:N0}{1}", SystemMonitor.Memory.GetMemorySize(Unit), Unit) '表示例:1,023MB
Unit = SystemMonitor.SizeUnit.GB
Me.Label4.Text = String.Format("{0:N2}{1}", SystemMonitor.Memory.GetMemorySize(Unit), Unit) '表示例:1.00GB
End Sub
個人的には以下のクラスを作ってプログラムや自作DLLから利用しています。
○数値、文字列、日付等の処理を行う静的メソッドを提供するクラス
○判別処理を行う静的メソッドを提供するクラス
○ネットワーク関連の処理を行う静的メソッド・プロパティを提供するクラス
○データベースの処理を行う静的メソッド・プロパティを提供するクラス
これらはすべて静的(Shared)なメソッド・プロパティを提供するクラスなので、
クラスは Public NotInheritable にして、コンストラクタは Private にしています。
投稿者 トマト  (小学生)
投稿日時
2009/9/22 06:22:05
要するにListBoxのItemsと同じです。
投稿者 トマト  (小学生)
投稿日時
2009/9/22 06:20:38
新しいクラスを作ってMemoryプロパティにそのクラスのインスタンスを入れるというやり方がベストかと。
Public Class systemmonitor
Public ReadOnly Property Memory() As MemoryInfo
Static _mem As MemoryInfo
If _mem Is Nothing Then
_mem = New MemoryInfo
End If
Return _mem
End Function
End Class
Public Class MemoryInfo
'ここにメモリに関する物を入れる
End Class
投稿者 おおぎっち  (社会人)
投稿日時
2009/9/22 04:57:03
今、システムに関する数値を返すメソッドをまとめたクラスを作っているのですが
systemmonitor.vb
これで起動時に物理メモリの合計をMBに直し、整数で表示されますが
systemonitor.TotalPmemMB
ではなく
systemonitor.Memory.TotalPmemMB
としたいのです。
ほかにもsystemonitor.Memoryから
systemonitor.Memory.TotalPmem
systemonitor.Memory.TotalPmemKB
systemonitor.Memory.TotalPmemMB
systemonitor.Memory.TotalPmemGB
といくつかのメソッドをまとめたいのですがどうすればよいでしょうか。
コード、説明をいただけましたら幸いです。
よろしくお願いいたします。
Public Class Form1
Dim systemonitor As New systemmonitor
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(systemonitor.TotalPmemMB)
End Sub
End Class
systemmonitor.vb
Public Class systemmonitor
Public Function TotalPmemMB() As Integer
Return Math.Ceiling(My.Computer.Info.TotalPhysicalMemory / 1024 / 1024)
End Function
End Class
これで起動時に物理メモリの合計をMBに直し、整数で表示されますが
systemonitor.TotalPmemMB
ではなく
systemonitor.Memory.TotalPmemMB
としたいのです。
ほかにもsystemonitor.Memoryから
systemonitor.Memory.TotalPmem
systemonitor.Memory.TotalPmemKB
systemonitor.Memory.TotalPmemMB
systemonitor.Memory.TotalPmemGB
といくつかのメソッドをまとめたいのですがどうすればよいでしょうか。
コード、説明をいただけましたら幸いです。
よろしくお願いいたします。
ちょっと分からないことが飛び交っていますがじっくりと理解していこうと思います。
とりあえずくらすを入れ子にすることで解決いたしました。
ありがとうございました。またよろしくお願いします。