2009-04-18 64 views
6

Sono sicuro che questo è semplice ma non riesco a trovare la stringa corretta per ottenere un risultato su Google. In VB.NET qual è la differenza tra = (segno di uguale) e: = (due punti seguiti dal segno di uguale)?Qual è la differenza tra = e: =

risposta

16

L'operatore: = viene utilizzato per passare argomenti per nome in VB.Net. Ad esempio, prendi il seguente codice

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

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

Se osservi rigorosamente i tipi coinvolti qui ho passato i valori fuori ordine. Ma poiché ho associato gli argomenti per nome usando: =, il compilatore trasmetterà correttamente i valori.

L'operatore = dipende dal contesto in VB.Net. Può essere un incarico o un operatore di confronto. Ad esempio

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

Buono a sapersi, grazie! –

2

= è un operatore di confronto E impostato, ma è solo un operatore impostato.

Confronta: If 7 = 7 Then ...

Set: Dim myInt As Integer = 7

Diciamo che avete un oggetto personalizzato chiamato SuperList cui costruttore prende una variabile chiamata initialCount, allora si può fare cose come:

Dim myList As New SuperList(initialCount:=10) 

A volte è più semplice leggere un costruttore quando si conoscono i valori impostati, soprattutto se si dispone di un costruttore come SomeConstructor(12, 432, True, False, 32)

ha più senso per vedere SomeConstructor(monthsInYear:=12, daysInYear:=432, leapYears:True, leapDays:=False, daysInMonth:=32)

C'è probabilmente di più, ma questo è quello che ho ottenuto la parte superiore della mia testa.

+1

ma in vb.net = è sia un operatore di set e di confronto –

+0

La tua dichiarazione di apertura non è corretta –

+0

Modificato ... Il mio male. –

3

Il segno di uguale viene utilizzato per l'assegnazione ed è anche un operatore di confronto. Un esempio di assegnazione è

a = 5 

un esempio di confronto è

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

L': = è utilizzato specificamente per chiamare le funzioni di impostazione dei parametri particolari il valore in base al nome. Per esempio:

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 

Normalmente, si dovrebbe chiamare la funzione in questo modo:

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

Ma si può anche chiamare la funzione in questo modo:

Call studentInfo("Mary", birth:=#9/21/1981#) 
Problemi correlati