Referencias - Shell - 25-03-2023
Buenas!.
En este ejemplo tenemos dos arrays, tabla1 y tabla2.
Vamos a asignar a tabla2 la referencia de tabla1
Anularemos la variable tabla1 y veremos que pasa con tabla2. ¿ Se perderá su referencia ?.
No se impacienten....comienza!!
Código: Public Sub Ejemplo1()
Dim tabla1 As Integer[]
Dim tabla2 As Integer[]
tabla1 = New Integer[100]
MuestraDireccion("tabla1", tabla1)
tabla2 = tabla1
MuestraDireccion("tabla2", tabla2)
tabla1 = Null 'Hacemos nula
MuestraDireccion("tabla1", tabla1)
MuestraDireccion("tabla2", tabla2)
End
Public Sub MuestraDireccion(nombre As String, tabla As Integer[])
Print "La referencia de " & nombre & " es: " & Object.Address(tabla)
End
Salida:
Cita:
La referencia de tabla1 es: 55AD39A9A518
La referencia de tabla2 es: 55AD39A9A518
La referencia de tabla1 es: 0
La referencia de tabla2 es: 55AD39A9A518
Tabla2 mantiene su referencia.
Saludos
RE: Referencias - vuott - 25-03-2023
Señalo esta página:
https://www.gambas-it.org/wiki/index.php/Copie_di_variabili_array
RE: Referencias - Shell - 26-03-2023
¿ Y si queremos saber si dos arrays son exactamente iguales ?
¿ Existe algún método ?
Código: Private t1[3] As Integer
Private t2[3] As Integer
Public Sub Main()
t1 = [1, 2, 3]
t2 = [1, 2, 3]
'Referencias distintas, valor falso
Print t1 = t2
Print Aiguales(t1, t2)
End
Public Function Aiguales(at1 As Integer[], at2 As Integer[]) As Boolean
Dim iguales As Boolean
Dim i As Integer
'Decimos que son iguales desde el principio
iguales = True
If at1.Length <> at2.Length Then iguales = False
While (iguales And i < at1.Count)
If at1 = at2 Then
Inc i
Else
iguales = False
Endif
Wend
Return iguales
End
Salida:
Cita:False
True
En Java existe.
Código: public class CompararDosTablas {
public static void main(String[] args) {
// Dos tablas iguales
int[] t1 = {7, 9, 20};
int[] t2 = {7, 9, 20};
System.out.println(t1 == t2); // Sin embargo muestra false
// Ya que sus referencias son distintas
// Dos tablas son iguales si contienen los mismos elementos
// en el mismo orden
// Comparamos con el método estático equals
System.out.println(Arrays.equals(t1, t2)); // muestra true
}
}
Saludos
|