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: p> merci p > p>
6 Réponses :
Non, je suis assez sûr que ce n'est pas possible - mais soyez reconnaissant! P>
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. P>
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. P>
VB ne le fait pas très bien, d'autant plus que l'attribution et la comparaison utilisent à la fois l'opérateur S'il est essentiel que vous puissiez tout faire en une ligne, vous pouvez créer la méthode = code>. 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. P>
getcustomer code> à un paramètre
byref code> 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. P>
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.
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é. plutôt, définissez simplement la variable et comparez: P> < Pré> xxx pré> p>
Un peu plus déroutant, oui, mais aussi, cela aiderait à garder le code plus sec.
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
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
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: 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: p>