2009-04-18 53 views
6

Estoy seguro de que esto es sencillo pero no puedo encontrar la cadena correcta para obtener un resultado de google. En VB.NET, ¿cuál es la diferencia entre = (signo igual) y: = (dos puntos seguido del signo igual)?Cuál es la diferencia entre = y: =

Respuesta

16

El operador: = se usa para pasar argumentos por nombre en VB.Net. Por ejemplo, tome el siguiente código

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

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

Si observa estrictamente los tipos implicados aquí, he pasado los valores desordenados. Pero como vinculé los argumentos por nombre usando: =, el compilador pasará los valores correctamente.

El operador = depende del contexto en VB.Net. Puede ser un operador de asignación o de comparación. Por ejemplo

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

¡Es bueno saberlo, gracias! –

2

= es una comparación Y un operador de conjunto, pero := es solo un operador establecido.

Compare: If 7 = 7 Then ...

Set: Dim myInt As Integer = 7

Digamos que tienes un objeto personalizado llamado SuperList cuyo constructor toma una variable llamada initialCount, a continuación, puede hacer cosas como:

Dim myList As New SuperList(initialCount:=10) 

A veces es más fácil leer un constructor cuando sabe qué valores está configurando, especialmente si tiene un constructor como SomeConstructor(12, 432, True, False, 32)

tiene más sentido para ver SomeConstructor(monthsInYear:=12, daysInYear:=432, leapYears:True, leapDays:=False, daysInMonth:=32)

Probablemente hay más, pero esto es lo que tengo de la parte superior de la cabeza.

+1

pero en vb.net = es un conjunto y operador de comparación –

+0

Su declaración de apertura es incorrecta –

+0

Editado ... Mi Malo. –

3

El signo igual se utiliza para la asignación y es también un operador de comparación. Un ejemplo de asignación es

a = 5 

Un ejemplo de comparación es

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

El: = se utiliza específicamente para llamar a las funciones con el establecimiento de parámetros concretos que el valor por su nombre. Por ejemplo:

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, se llame a la función como esta:

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

Pero también se puede llamar a la función de esta manera:

Call studentInfo("Mary", birth:=#9/21/1981#) 
Cuestiones relacionadas