2011-10-02 32 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

相关问题