有没有可能为VB.NET中的IF条件中的变量赋值?VB.NET:赋值给IF条件中的变量?
类似的东西:
Dim customer As Customer = Nothing
If IsNothing(customer = GetCustomer(id)) Then
Return False
End If
谢谢
有没有可能为VB.NET中的IF条件中的变量赋值?VB.NET:赋值给IF条件中的变量?
类似的东西:
Dim customer As Customer = Nothing
If IsNothing(customer = GetCustomer(id)) Then
Return False
End If
谢谢
对不起,没有。另一方面,它会变得非常混乱,因为VB.NET对赋值和相等使用相同的运算符。
If a = b Then 'wait, is this an assignment or comparison?!
相反,只需设置变量和比较:
Dim customer As Customer = Nothing
customer = GetCustomer(id)
If IsNothing(customer) Then
Return False
End If
不,我相当肯定这是不可能的 - 而是心存感激!
这是基于C语言的一个“功能”,我永远不会鼓励使用它,因为它可能被误用或被误解的频率更高。
我认为最好的方法是尝试表达“每行一个想法”,并抵制在同一行中组合两个操作的编码。以这种方式组合赋值和比较通常不会让代码更难理解。
VB并没有那么做,特别是因为赋值和比较都使用了=
运算符。它会变得非常混乱。而且由于VB在某种程度上被设计为新手友好(“BASIC”中的B实际上代表“初学者”),因此具有多种副作用的表达式不是该语言通常喜欢做的事情。
如果必须能够在一行中完成所有操作,那么可以将GetCustomer
方法分配给ByRef
参数,并返回一个布尔值,表示赋值是否为空。但是真的,最好只分配,然后与null进行比较。
想大声,因为你并没有显示客户或GETCUSTOMER ...
Dim myCust As New Customer
If myCust.GetCustomer(someID) Then
End If
Class Customer
Private _customerID As Integer
Const noCustomer As Integer = -1
Public Sub New()
Me._customerID = noCustomer 'no customer
End Sub
Public Function GetCustomer(ByVal id As Integer) As Boolean
'perform required action to get customer
'if successful then set Me._customerID to ID else set it to no customer value
Return Me.HaveCustomer
End Function
Public Function HaveCustomer() As Boolean
If Me._customerID = noCustomer Then Return False Else Return True
End Function
End Class
没有内置支持为此,但您可以使用此解决方法。
Public Function Assign(Of T)(ByRef destination As T, ByVal value As T) As T
destination = value
Return destination
End Function
然后它可以像这样使用。
Dim customer As Customer = Nothing
If IsNothing(Assign(customer, GetCustomer(id))) Then
Return False
End If
好吧,然后我用这种方法:) – Torben 2010-07-28 07:06:35
有点混乱,是的,但也有助于保持代码更干。 – 2014-11-07 14:50:58