8
votes

VB.NET: Attribuez une valeur à la variable à l'intérieur d'une condition IF?

Y a-t-il une possibilité d'affecter une valeur à une variable à l'intérieur d'une condition IF dans VB.NET. REDOW "P>Quelque chose comme ça: xxx

merci


0 commentaires

6 Réponses :


5
votes

Non, je suis assez sûr que ce n'est pas possible - mais soyez reconnaissant!

Il s'agit d'une "caractéristique" de langues basées sur CS que je n'encouragerais jamais l'utilisation, car elle est probablement mal utilisée ou mal interprétée plus souvent que non.

Je pense que la meilleure approche consiste à essayer d'exprimer "une pensée par ligne" et de résister à la codage qui combine deux opérations dans la même ligne. Combinant une mission et une comparaison de cette manière n'atteint généralement pas beaucoup d'autres que de rendre le code plus difficile à comprendre.


0 commentaires

3
votes

VB ne le fait pas très bien, d'autant plus que l'attribution et la comparaison utilisent à la fois l'opérateur = . Il serait vraiment déroutant. Et comme VB dans une certaine mesure est conçu pour être neufs et convivial (la B de base "représente en fait des" débutants "), les expressions avec des effets secondaires multiples ne sont pas quelque chose que la langue aime généralement faire.

S'il est essentiel que vous puissiez tout faire en une ligne, vous pouvez créer la méthode getcustomer à un paramètre byref et renvoyer un dicton booléen si la valeur attribuée était null. Mais vraiment, il vaut mieux d'affecter et de comparer ensuite à NULL.


3 commentaires

Merci, alors je viens d'affecter et de comparer :)


En tant qu'expert de programmation, je déteste vraiment utiliser une langue pour les débutants ..


Meh. En tant qu'expert de programmation, je reconnais que la lisibilité> la concision. :) imo vb eut en fait une demi-bonne idée ici. Juste est arrivé à être le résultat d'autres mauvaises idées.



9
votes

Désolé, non. D'autre part, cela deviendrait vraiment déroutant, car vb.net utilise le même opérateur pour la mission et l'égalité. xxx

plutôt, définissez simplement la variable et comparez: < Pré> xxx


1 commentaires

Un peu plus déroutant, oui, mais aussi, cela aiderait à garder le code plus sec.



0
votes

Penser à voix haute car vous n'avez pas montré de client ou de 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


0 commentaires

2
votes

Il n'y a pas de support intégré pour le faire, mais vous pouvez utiliser cette solution de contournement.

Dim customer As Customer = Nothing 

If IsNothing(Assign(customer, GetCustomer(id))) Then 
    Return False 
End If 


0 commentaires

0
votes

Oui, il est possible d'affecter une valeur à une variable à l'intérieur d'une condition IF dans VB.NET. Il y a même une prise en charge intégrée pour le faire, bien qu'à une portée limitée: xxx

où les méthodes dans la classe verrouillée sont destinées à être utilisées dans un environnement multi-threading. Par conception, la valeur de retour de l'échange () est l'ancienne valeur, plutôt que la nouvelle. Ainsi, pour obtenir le résultat équivalent plutôt cryptique: xxx


0 commentaires