Public thisTicket as new ticket
并坚持说我需要使用Dim
而不是Public
,但这会阻止我访问我声明它的子对象之外的对象。
基本上我试图在一个子目录中执行以下操作:
Public thisTicket as new ticket
thisTicket.completed = true
然后在另一个子中:
if thisTicket.completed = true then
'do this
else
'do this instead
end if
类别:
Public Class ticket
Property hasStatusChange As Boolean
Property initialAssignmentStatus As String
Property initialApprovalStatus As String
Property initialCompletionStatus As String
Property newApprovalStatus As String
Property newCompletionStatus As String
Property newAssignmentStatus As String
Property wasUpdated As Boolean
End Class
另一个问题,
如果我在一张名为&#34的完成的新票据下创建了一个新物业;则完成了更改为布尔"
如果initialCompletionStatus不等于newCompletion状态(那么它将是真的),并且该条件为真或假的标准,
我怎么能得到它以便我可以说:
if thisTicket.completionchanged = true then
让它知道自己是否真实,没有我每次都要拼出if / then?
答案 0 :(得分:1)
Sub或Function或属性getter或setter中的局部变量(即在方法中)仅在执行方法时生效。在调用此方法之前或之后,本地变量不存在。因此,像Public
这样的修饰符在那里毫无意义。
如果您需要从方法外部访问变量,请将其设为类成员(字段或属性)。
回答第二个问题。这就是物业存在的原因。您可以为它们添加在访问它们时执行的逻辑。
Private m_completionStatus As String
Property CompletionStatus() As String
Get
Return m_completionStatus
End Get
Set(ByVal Value As String)
If Value <> m_completionStatus Then
m_completionStatus = Value
completionChanged = True
End If
End Set
End Property
然后请写下
If thisTicket.completionchanged Then
并删除“= true”。 If语句想要的是一个产生布尔结果的表达式,而布尔变量本身就是一个表达式。在If语句中不需要进行任何比较。
如果completionchanged
为True
,那么completionchanged = True
也是True
。如果completionchanged
为False
,则completionchanged = True
也为False
。与“= True”相比有点像将数字乘以1.它不会改变任何东西。
答案 1 :(得分:0)
如果您希望它成为该类的成员,例如属性。
Public Property ThisTicket As Ticket
在你的课堂上&#39;构造函数初始化它。
Public Sub New()
ThisTicket = new Ticket
End Sub
现在,您可以从班级内部访问此票证。但是,请考虑代码中的其他位置是否确实需要了解此成员。如果他们不这样做,请将其设为私有。如果您可以在将来需要访问子类型的情况下扩展此类,请将其保护。
如果您决定将其设为私有,则可以绕过将其设为属性并将其创建为字段。
Private _thisTicket As Ticket
你也应该问问自己,这个玩家是否真的属于包含对象的状态。包含对象是否处理了很多票?也许票证应该被传递到处理函数而不是被包含。如果包含对象的状态在其整个生命周期中只涉及该票证,则将其作为属性是有效的。
至于你的第二个问题..
在Ticket中创建一个函数来评估你提到的业务逻辑,如果它已经改变,则返回布尔值。
Public Function HasStatusChanged As Boolean
logic...
End Function