Evento
Construír aplicacións intelixentes
Mar 17, 9 PM - Mar 21, 10 AM
Únete á serie de encontros para construír solucións de IA escalables baseadas en casos de uso do mundo real con compañeiros desenvolvedores e expertos.
Rexistrar agoraEste explorador xa non é compatible.
Actualice a Microsoft Edge para dispoñer das funcionalidades máis recentes, as actualizacións de seguranza e a asistencia técnica.
Especifica que un argumento se pasa por valor, de modo que el procedimiento o la propiedad llamados no pueden cambiar el valor de una variable subyacente al argumento en el código de llamada. Si no se especifica ningún modificador, ByVal es el valor predeterminado.
Nota
Dado que es el valor predeterminado, no es necesario especificar explícitamente la ByVal
palabra clave en las firmas del método. Tiende a generar código ruidoso y, normalmente, hace que se pase por alto la palabra clave ByRef
no predeterminada.
El modificador ByVal
se puede utilizar en los contextos siguientes:
En el ejemplo siguiente se muestra el uso del ByVal
mecanismo de paso de parámetros con un argumento de tipo de referencia. En el ejemplo, el argumento es c1
, una instancia de clase Class1
. ByVal
evita que el código de los procedimientos cambie el valor subyacente del argumento de referencia, c1
, pero no protege los campos y propiedades accesibles de c1
.
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module
Comentarios de .NET
.NET é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios:
Evento
Construír aplicacións intelixentes
Mar 17, 9 PM - Mar 21, 10 AM
Únete á serie de encontros para construír solucións de IA escalables baseadas en casos de uso do mundo real con compañeiros desenvolvedores e expertos.
Rexistrar agora