首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB类的最佳实践--给所有属性值?

问VB类的最佳实践--给所有属性值?
EN

Stack Overflow用户
提问于 2010-03-16 22:42:12
回答 4查看 799关注 0票数 0

抱歉,如果这有点随机,但在实例化类时,给类的所有字段赋值是不是一种好的做法?我只是想知道,如果有一个不带参数并为所有字段提供默认值的构造器是更好的做法,还是应该为有值的字段赋值,而让其他字段保持原样,直到需要?

我希望这说得通,贝基

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-16 22:51:14

我不知道这是否会影响性能,但我个人更喜欢在声明中为任何有显式默认值的字段赋值,因此:

代码语言:javascript
复制
Public Class MyClass
    Private pIsDirty As Boolean = False
    Private pDated as Date = Now()
End Class

请记住大多数“简单”类型,如boolean、integer等都是自动缺省的,不需要初始化,但我在这里只是举例说明,有时为了清楚起见,你还是想要它。此外,因为我编写的任何类都是内部使用的(我们不出售任何公共使用的代码对象),所以我可以向我的类的消费者保证。因此,我通常只编写一个最小的构造函数(如果需要一个非默认的构造函数),它只接受主字段,并在VB中使用新的With语法旋转任何附加值,如下所示:

代码语言:javascript
复制
Dim myObj = New SomeClass() With { .Prop1 = "value", .Prop2 = Now() }
票数 0
EN

Stack Overflow用户

发布于 2010-03-16 22:47:30

您的类的构造函数应该接受足够的参数以使其处于可用状态。

通过在构造函数中使用Optional Parameters,您可以获得您想要的相同功能。

这样,您可以按名称仅设置您必须设置的属性,并让其余属性保留默认值,直到您需要更改它们。

代码语言:javascript
复制
Sub Notify(ByVal Company As String, Optional ByVal Office As String = "QJZ")
   If Office = "QJZ" Then
      Debug.WriteLine("Office not supplied -- notifying Headquarters")
      Office = "Headquarters"
   End If
   ' Code to notify headquarters or specified office.
End Sub

请记住,可选参数必须在所有非可选参数之后。

票数 1
EN

Stack Overflow用户

发布于 2010-03-16 22:47:02

理想的做法是,只要构造函数返回,就让对象处于可用状态。这减少了部分“就绪”对象被无意中使用的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2455264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档