Аргумент ByRef не работает должным образом
Кто-нибудь когда-нибудь видел это?
Public Shared Function IsAvailableByCampaignId(ByVal cn As SqlConnection, ByVal tr As SqlTransaction, ByVal campaignId As Integer, ByRef dest As PricingThresholds) As Boolean
Dim retObj = ItemTypes.PricingThresholds.GetThresholds(cn, tr, campaignId)
If retObj IsNot Nothing Then
dest = New PricingThresholds(retObj)
End If
Dim retVal As Boolean = retObj IsNot Nothing
Return retVal
End Function
Когда я звоню внутреннему
Dim retObj = ItemTypes.PricingThresholds.GetThresholds(cn, tr, campaignId)
Я получаю ненулевое или ничего retObj, но затем я использую его для создания с ним нового PricingThresholds, который является правильным типом, который мне нужно вернуть, и мне удается создать действительный объект возвращаемого типа, но я возвращаюсь из внешнего вызовите parm dest передано ByRef
не имеет значения и является ничем или нулем.
Как будто VB не работает.
Я полагаю, я могу просто вернуть это по-другому.
1 ответ
Ниже код показывает, что все работает, как ожидалось, т.е. dest
переназначается и сохраняет свою ценность за пределами IsAvailableByCampaignId
функция:
Sub Main()
Dim dest As New PricingThresholds(1)
Dim p = IsAvailableByCampaignId(dest)
End Sub
Class PricingThresholds
Dim _id As Integer
Sub New(id As Integer)
_id = id
End Sub
End Class
Public Function IsAvailableByCampaignId(ByRef dest As PricingThresholds) As Boolean
dest = New PricingThresholds(2)
Return True
End Function
Не стесняйтесь поиграть с этим кодом и посмотрите, сможете ли вы воспроизвести поведение, которое у вас есть.