2011-10-02 60 views
0

我正在學習vb.net,並且遇到了以下幾個問題:我應該在類中創建單獨的屬性還是僅創建一個設置值的方法?

我可以創建自定義類和獲取/設置值的多個屬性,或者我可以創建一個方法來設置它們全部立刻。如果每個屬性都允許讀寫,我應該只是一個方法來一次賦值?我認爲我錯過了一個非常重要的作品。例如:

我可以創建2個屬性:

Public Class Employee 
     Public Property LastName as string 
     Get 
      Return strLastName 
     End get 

     Set(ByVal value as string) 
      strLastName= value 
     End Set 
     End Property 

     Public Property FirstName as string 
     Get 
      Return strFirstName 
     End get 

     Set(ByVal value as string) 
      strFirstName= value 
     End Set 
     End Property 
    End Class 

或我可以創建一個方法:

Public Class Employee 
     Public Sub AddEmployee(ByVal strLastName, ByVal strFirstName) 
      LastName = strLastName 
      FirstName = strFirstName 
     End Sub 
    End Class 

我這樣一個noob問題道歉,但任何見解是極大的讚賞。謝謝!

回答

2

如果你只有一個方法,你會使用它,即使你只是想改變字段的值。

此外,在這種方法中,如果您需要驗證輸入,則需要編寫相當多的與所有字段無關的驗證代碼。

如果值必須一起更新,請使用一種方法將它們一起更新並且不提供setter。

事情的實際情況是,如何做到這一點取決於你在班上建模的內容。沒有硬性和快速的規則說,屬性比方法更好,反之亦然。

+0

好的,這是有道理的。現在我可以想到幾個場景,我想在屬性上使用方法,反之亦然。我認爲兩者的結合對於我正在建造的這個特定班級將會有所幫助。我只需要做我想要完成的事情。你的解釋確實有幫助。謝謝! – kdonah3

+0

@ kdonah3 - 很高興能幫到您:) – Oded

+1

如果您決定使用該方法,我可能會建議您使用不同的名稱,如SetEmployee或NameEmployee。 AddEmployee(無論如何)表明您的班級中可能會有幾名員工,並且此功能會添加一個新員工。現在看起來可能不是什麼大不了的事情,但它會大大提高代碼的可讀性,您或其他讀取代碼的人將在未來欣賞它。 – JBB

2

沒有理由不支持屬性和設置多個屬性的方法。

通常,構造函數用於創建類的實例並設置一些屬性。在VB中,命名類方法「New」將其定義爲構造函數。在你的例子中,如果你將AddEmployeee方法重命名爲New,你將擁有一個非常好的構造函數。然後你的程序可以創建新的實例,如下:

Dim emp1 as New Employee("Burdell", "George") 
+0

哦有趣。我甚至沒有想到......謝謝! – kdonah3

相關問題