2011-07-01 13 views
9

Duplicar posible:
What is the use of the := syntax?¿Qué hace a: = (dos puntos) en VB.NET?

he intentado dar caza a la documentación de MSDN para := en VB.NET, así como rastreado Google sólo para estar vinculado a una página de MSDN muertos. .. ¿Cuál sería el propósito de :=?

+0

@will qué términos de búsqueda usó? A SO.com no le gusta que ponga: = en la búsqueda y tampoco obtuve mucho con "colon es igual a vb.net" ... –

+0

Andy - esa otra pregunta aparece en la columna 'relacionada' de la derecha - no lo hago saber qué sistema SO utiliza para completar esa lista, o si aparecería en las sugerencias que se le hayan mostrado al ingresar su pregunta. –

Respuesta

5

Enumera con fuerza los argumentos, lo que le permite llamar a un método con argumentos en un orden distinto al especificado en la definición del método.

Por ejemplo:

sub foo (byval x As Long, byval y As Long) 
    debug.print (String.Format("{0}, {1}", x.ToString, y.ToString)) 
end Function 

puede ser llamado con el orden de los argumentos invertidas mediante el uso de sus nombres:

foo (y:=999, x:=111) 

grabados:

111, 999 

Esto es especialmente útil cuando tienes una larga lista de argumentos opcionales, solo quieres especificar algunos de ellos, y los que nt para especificar no son los primeros.

+1

Su código no se compilará. Reemplace 'function' con' sub', 'debug.print x, y' con' Debug.Print (String.Format ("{0}, {1}", x.ToString, y.ToString)) ',' foo y: = 999, x: = 111' con 'foo (y: = 999, x: = 111)' y obtienes el resultado. –

+0

El código publicado no se compila ... Oh, veo que esto fue señalado. – dbasnett

4

Se usa para nombrar argumentos en una llamada a método y generalmente se usa con argumentos opcionales.

Es especialmente útil para llamar a métodos de Word o Excel a través de llamadas ActiveX, donde hay una gran cantidad de argumentos opcionales, la mayoría de los cuales nunca se utilizan.

+1

Estoy de acuerdo en que esto solo es realmente útil para funciones con muchas args opcionales. – dbasnett

2

No estoy seguro acerca de VB.NET, pero en Visual Basic 6.0 esa fue la sintaxis para asignar un valor al parámetro de método por nombre en lugar de por posición ordinal.

2

Asigna valores por nombre en lugar de posición.

Dado

Private Function foo(arg1 As Integer, arg2 As Integer) As Boolean 
    Debug.WriteLine("{0} {1}", arg1, arg2) 
    Return True 
End Function 

estos producen el mismo resultado

foo(arg2:=2, arg1:=1) 

    foo(1, 2) 

salida de depuración

Cuestiones relacionadas