2009-04-18 13 views
6

Je suis sûr que c'est simple, mais je ne peux pas trouver la bonne chaîne pour obtenir un résultat google. Dans VB.NET, quelle est la différence entre = (signe égal) et: = (deux points suivi d'un signe égal)?Quelle est la différence entre = et: =

Répondre

16

L'opérateur: = est utilisé pour transmettre des arguments par nom dans VB.Net. Par exemple prendre le code suivant

Sub Foo(p1 As integer, p2 As String) 
    .. 
End Sub 

Sub Test() 
    Foo(p2:="foo",p1:=42) 
End Sub 

Si vous regardez strictement les types impliqués ici, j'ai passé les valeurs dans le désordre. Mais parce que j'ai lié les arguments par nom en utilisant: =, le compilateur passera correctement les valeurs.

L'opérateur = dépend du contexte dans VB.Net. Il peut s'agir d'un opérateur d'affectation ou de comparaison. Par exemple

Dim x = 42 ' Assignment 
if x = 36 Then 
'Comparison above 
End if 
+0

Bon à savoir, merci! –

2

= est un opérateur de comparaison ET un ensemble, mais := est juste un opérateur ensemble.

Comparer: If 7 = 7 Then ...

Set: Dim myInt As Integer = 7

Supposons que vous avez un objet personnalisé appelé SuperList dont le constructeur prend une variable appelée initialCount, alors vous pouvez faire des choses comme:

Dim myList As New SuperList(initialCount:=10) 

Il est parfois plus facile de lire un constructeur lorsque vous connaissez les valeurs que vous définissez, en particulier si vous avez un constructeur comme SomeConstructor(12, 432, True, False, 32)

Il est plus logique de voir SomeConstructor(monthsInYear:=12, daysInYear:=432, leapYears:True, leapDays:=False, daysInMonth:=32)

Il y a probablement plus, mais ce que je suis descendu du haut de ma tête.

+1

mais dans vb.net = est à la fois un ensemble et un opérateur de comparaison –

+0

Votre déclaration d'ouverture est incorrecte –

+0

Edited ... My Bad. –

3

Le signe égal est utilisé pour l'affectation et est également un opérateur de comparaison. Un exemple d'affectation est

a = 5 

Un exemple de comparaison est

if (a = 5) then 
    ' do something here 
    end if 

Le: = est utilisé spécifiquement pour appeler les fonctions avec le réglage des paramètres propres à la valeur par son nom. Par exemple:

Sub studentInfo(ByVal name As String, _ 
     Optional ByVal age As Short = 0, _ 
     Optional ByVal birth As Date = #1/1/2000#) 

    Debug.WriteLine("Name = " & name & _ 
       "; age = " & CStr(age) & _ 
       "; birth date = " & CStr(birth)) 
End Sub 

Normalement, vous appelez la fonction comme ceci:

Call studentInfo("Mary", 19, #9/21/1981#) 

Mais vous pouvez aussi appeler la fonction de cette façon:

Call studentInfo("Mary", birth:=#9/21/1981#) 
Questions connexes