0

List Object はコンストラクタで作成するのと、クラス変数定義域で作成するのとではどちらがよいでしょうか? 彼らは結局同じことをするのですか?ある方法が他の方法よりも優先されるのはいつですか?

クラス定義の例を次に示します。

Public Class CProject

    'Variable to hold a list of Load Objects, Instantiate here vs in New().
    Private m_LoadList As New List(Of CLoad)

    Public Property LoadList() As List(Of CLoad)
        Get
            Return m_LoadList
        End Get
        Set(ByVal value As List(Of CLoad))
            m_LoadList = value
        End Set
    End Property

    Public Sub New()

    End Sub

End Class

節:

Public Class CProject

    'Variable to hold a list of Load Objects
    Private m_LoadList As List(Of CLoad)

    Public Property LoadList() As List(Of CLoad)
        Get
            Return m_LoadList
        End Get
        Set(ByVal value As List(Of CLoad))
            m_LoadList = value
        End Set
    End Property

    Public Sub New()
        m_LoadList = New List(Of CLoad)
    End Sub

 End Class
4

1 に答える 1

0

いくつかの変更を加えて、オプション #2 に近づけます。

Private m_LoadList As List(Of ADR) = Nothing


Public Property LoadList() As List(Of CLoad)
    Get
        If m_LoadList Is Nothing Then
            m_LoadList = New List(Of CLoad)
        End If
        Return m_LoadList
    End Get
    Set(ByVal value As List(Of CLoad))
        m_LoadList = value
    End Set

End Property

このようにして、プロパティを参照し、何も存在しない場合にのみ新しいインスタンスを作成できます。オーバーヘッドを生み出すミスの可能性を減らし、よりシンプルなコーディング..

于 2013-04-01T12:42:54.020 に答える