SlideShare una empresa de Scribd logo
1 de 34
Uso de variables de tipo
referencia
Notas generales
 Uso de variables de tipo referencia
 Uso de tipos referencia comunes
 La jerarquía de objetos
 Espacios de nombres en .NET Framework
 Práctica A - Definición y uso de variables de tipo
referencia
 Conversiones de datos
 Práctica B - Conversión de datos
 Uso de variables de tipo referencia
 Comparación de tipos valor y tipos referencia
 Declaración y liberación de variables referencia
 Referencias no válidas
 Comparación de valores y comparación de referencias
 Referencias múltiples a un mismo objeto
 Uso de referencias como parámetros de métodos
Comparación de tipos valor y tipos referencia
 Tipos valor
 La variable
contiene el valor
directamente
 Ejemplos:
char, int
4242
int mol;
mol = 42;
int mol;
mol = 42;
••
string mol;
mol = “Hola";
string mol;
mol = “Hola";
HolaHola
 Tipos referencia
 La variable contiene una
referencia al dato
 El dato se almacena en un
área de memoria aparte
Declaración y liberación de variables referencia
 Declaración de variables referencia
coordenada c1;
c1 = new coordinate();
c1.x = 6.12;
c1.y = 4.2;
coordenada c1;
c1 = new coordinate();
c1.x = 6.12;
c1.y = 4.2;
•• 6.126.12 4.24.2
c1 = null;c1 = null;
•• 6.126.12 4.24.2
 Liberación de variables referencia
Referencias no válidas
 Si hay referencias no válidas
 No es posible acceder a miembros o variables
 Referencias no válidas en tiempo de compilación
 El compilador detecta el uso de referencias no inicializadas
 Referencias no válidas en tiempo de ejecución
 El sistema generará un error de excepción
Comparación de valores y comparación de referencias
 Comparación de tipos valor
 == and != comparan valores
 Comparación de tipos referencia
 == and != comparan las referencias, no los valores
•• 1.01.0 2.02.0
•• 1.01.0 2.02.0
Diferente
Referencias múltiples a un mismo objeto
 Dos referencias pueden apuntar a un mismo objeto
 Dos formas de acceder a un mismo objeto para
lectura/escritura
coordinate c1= new coordinate ( );
coordinate c2;
c1.x = 2.3; c1.y = 7.6;
c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y);
Console.WriteLine(c2.x + " , " + c2.y);
coordinate c1= new coordinate ( );
coordinate c2;
c1.x = 2.3; c1.y = 7.6;
c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y);
Console.WriteLine(c2.x + " , " + c2.y);
••
2.32.3 7.67.6
••
c1
c2
Uso de referencias como parámetros de métodos
 Las referencias se pueden usar como parámetros
 Si se pasan por valor, es posible cambiar el dato
referenciado
static void PassCoordinateByValue(coordinate c)
{
c.x++; c.y++;
}
static void PassCoordinateByValue(coordinate c)
{
c.x++; c.y++;
}
loc.x = 2; loc.y = 3;
PassCoordinateByValue(loc);
Console.WriteLine(loc.x + " , " + loc.y);
loc.x = 2; loc.y = 3;
PassCoordinateByValue(loc);
Console.WriteLine(loc.x + " , " + loc.y);
2 32 3 3 43 4
••
••
 Uso de tipos referencia comunes
 Clase Exception
 Clase String
 Métodos, operadores y propiedades comunes de String
 Comparaciones de cadenas de caracteres
 Operadores de comparación en String
Clase Exception
 Exception es una clase
 Los objetos Exception se usan para lanzar excepciones
 Para crear un objeto Exception se usa new
 Para lanzar el objeto se usa throw
 Los tipos Exception son subclases de Exception
Clase String
 Cadenas de caracteres Unicode
 Abreviatura de System.String
 Inmutable
string s = "Hola";
s[0] = 'c'; // Error al compilar
string s = "Hola";
s[0] = 'c'; // Error al compilar
Métodos, operadores y propiedades comunes de String
 Corchetes
 Método Insert
 Propiedad Length
 Método Copy
 Método Concat
 Método Trim
 Métodos ToUpper y ToLower
Comparaciones de cadenas de caracteres
 Método Equals
 Comparación de valores
 Método Compare
 Más comparaciones
 Opción para no distinguir mayúsculas y minúsculas
 Ordenación alfabética
 Opciones locales de Compare
Operadores de comparación en String
 Los operadores == y != están sobrecargados para cadenas
 Son equivalentes a String.Equals y !String.Equals
string a = "Test";
string b = "Test";
if (a == b) ... // Devuelve true
string a = "Test";
string b = "Test";
if (a == b) ... // Devuelve true
 La jerarquía de objetos
 El tipo object
 Métodos comunes
 Reflexión
El tipo object
 Sinónimo de System.Object
 Clase base para todas las demás clases
ExceptionException
SystemExceptionSystemException
MyClassMyClass
ObjectObject
StringString
Métodos comunes
 Métodos comunes para todos los tipos referencia
 Método ToString
 Método Equals
 Método GetType
 Método Finalize
Reflexión
 Es posible obtener información sobre el tipo de un objeto
 Espacio de nombres System.Reflection
 El operador typeof devuelve el tipo de un objeto
 Sólo para clases en tiempo de compilación
 Método GetType en System.Object
 Información sobre clases en tiempo de ejecución
 Espacios de nombres en .NET Framework
 Espacio de nombres System.IO
 Espacio de nombres System.Xml
 Espacio de nombres System.Data
 Otros espacios de nombres útiles
Espacio de nombres System.IO
 Acceso a entrada/salida del sistema de archivos
 File, Directory
 StreamReader, StreamWriter
 FileStream
 BinaryReader, BinaryWriter
Espacio de nombres System.Xml
 Compatibilidad con XML
 Estándares de XML
Espacio de nombres System.Data
 System.Data.SqlClient
 SQL Server .NET Data Provider
 System.Data
 Consta básicamente de las clases que constituyen la
arquitectura ADO.NET
Otros espacios de nombres útiles
 Espacio de nombres System
 Espacio de nombres System.Net
 Espacio de nombres System.Net.Sockets
 Espacio de nombres System.Windows.Forms
Práctica A - Definición y uso de variables de tipo referencia
 Conversiones de datos
 Conversión de tipos valor
 Conversiones padre/hija
 El operador is
 El operador as
 Conversiones y el tipo object
 Conversiones e interfaces
 Boxing y unboxing
Conversión de tipos valor
 Conversiones implícitas
 Conversiones explícitas
 Operador de cast
 Excepciones
 Clase System.Convert
 Control interno de conversiones
Conversiones padre/hija
 Conversión a referencia de clase padre
 Implícita o explícita
 Siempre tiene éxito
 Siempre se puede asignar a un objeto
 Conversión a referencia de clase hija
 Es necesario cast explícito
 Comprueba que la referencia es del tipo correcto
 Si no lo es, causa una excepción InvalidCastException
El operador is
 Devuelve true si es posible realizar una conversión
Pajaro b;
if (a is Pajaro)
b = (Pajaro) a; // No hay problema
else
Console.WriteLine("No es Pájaro");
Pajaro b;
if (a is Pajaro)
b = (Pajaro) a; // No hay problema
else
Console.WriteLine("No es Pájaro");
El operador as
 Hace conversiones entre tipos referencia, como cast
 En caso de error
 Devuelve null
 No causa una excepción
Pajaro b = a as Pajaro; // Convertir
if (b == null)
Console.WriteLine("No es Pájaro”);
Pajaro b = a as Pajaro; // Convertir
if (b == null)
Console.WriteLine("No es Pájaro”);
Conversiones y el tipo object
 El tipo object es la base para todas las clases
 Se puede asignar a object cualquier referencia
 Se puede asignar cualquier variable object a cualquier
referencia
 Con conversión de tipo y comprobaciones
 El tipo object y el operador is
object buey;
buey = a;
buey = (object) a;
buey = a as object;
object buey;
buey = a;
buey = (object) a;
buey = a as object;
b = (Pajaro) buey;
b = buey as Pajaro;
b = (Pajaro) buey;
b = buey as Pajaro;
Conversiones e interfaces
 Una interfaz sólo se puede usar para acceder a sus
propios miembros
 No es posible acceder a otros miembros y variables de
la clase a través de la interfaz
Boxing y unboxing
 Sistema de tipos unificado
 Boxing
 Unboxing
 Llamadas a métodos de object en tipos valor
int p = 123;
object box;
box = p;
int p = 123;
object box;
box = p;
•• 123123
123123 p = (int)box;p = (int)box;
Práctica B - Conversión de Datos

Más contenido relacionado

La actualidad más candente

El primer objetivo de un programa informático es el manejo de datos
El primer objetivo de un programa informático es el manejo de datosEl primer objetivo de un programa informático es el manejo de datos
El primer objetivo de un programa informático es el manejo de datosRolando Azcorra Medina
 
Introducción a los tipos de datos
Introducción a los tipos de datosIntroducción a los tipos de datos
Introducción a los tipos de datosCarlos Pes
 
Linq
LinqLinq
Linqblo85
 
Programar java
Programar javaProgramar java
Programar javavloor
 
Capítulo ii elementos java
Capítulo ii elementos javaCapítulo ii elementos java
Capítulo ii elementos javasaimaga30
 
Programar java
Programar javaProgramar java
Programar javavloor
 
Tipos de datos usados en c
Tipos de datos usados en cTipos de datos usados en c
Tipos de datos usados en clagq
 
Conceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosConceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosMarisol Henao
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Eloy Rodriguez
 
Tipos de datos_para_c_
Tipos de datos_para_c_Tipos de datos_para_c_
Tipos de datos_para_c_Jesus22barrera
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacionRUBI DEFAZ
 

La actualidad más candente (15)

Atributos
AtributosAtributos
Atributos
 
El primer objetivo de un programa informático es el manejo de datos
El primer objetivo de un programa informático es el manejo de datosEl primer objetivo de un programa informático es el manejo de datos
El primer objetivo de un programa informático es el manejo de datos
 
Introducción a los tipos de datos
Introducción a los tipos de datosIntroducción a los tipos de datos
Introducción a los tipos de datos
 
Linq
LinqLinq
Linq
 
Programar java
Programar javaProgramar java
Programar java
 
Capítulo ii elementos java
Capítulo ii elementos javaCapítulo ii elementos java
Capítulo ii elementos java
 
Programar java
Programar javaProgramar java
Programar java
 
Javascript
JavascriptJavascript
Javascript
 
Java
JavaJava
Java
 
Tipos de datos usados en c
Tipos de datos usados en cTipos de datos usados en c
Tipos de datos usados en c
 
Conceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetosConceptos de programacion orientada a objetos
Conceptos de programacion orientada a objetos
 
Lenguajes de Programación: Tutorial csharp
Lenguajes de Programación: Tutorial csharpLenguajes de Programación: Tutorial csharp
Lenguajes de Programación: Tutorial csharp
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)
 
Tipos de datos_para_c_
Tipos de datos_para_c_Tipos de datos_para_c_
Tipos de datos_para_c_
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 

Destacado

Estadística 1º parte
Estadística 1º parteEstadística 1º parte
Estadística 1º parteRaquel Hack
 
Verdadera longitud de una linea
Verdadera longitud de una lineaVerdadera longitud de una linea
Verdadera longitud de una lineanailarodriguez
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasCarlos Pes
 
Mola hidatidiforme mia
Mola hidatidiforme miaMola hidatidiforme mia
Mola hidatidiforme miaMaria Anillo
 
Funciones de Variación
Funciones de VariaciónFunciones de Variación
Funciones de VariaciónAngel Carreras
 
Variables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CVariables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CRonny Parra
 
Fundamentos de programación Java
Fundamentos de programación JavaFundamentos de programación Java
Fundamentos de programación Javaquesada_diego
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicasAny Saula
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()Clara Patricia Avella Ibañez
 
Cronograma de actividades del proyecto de investigacion
Cronograma  de actividades del proyecto de investigacionCronograma  de actividades del proyecto de investigacion
Cronograma de actividades del proyecto de investigacionIETI SD
 
Las variables en una investigacion cientifica
Las variables en una investigacion cientificaLas variables en una investigacion cientifica
Las variables en una investigacion cientificaprofesorrene
 
Razón Geométrica
Razón GeométricaRazón Geométrica
Razón GeométricaRonnie78
 
Hipotesis de investigacion
Hipotesis de investigacionHipotesis de investigacion
Hipotesis de investigacionMarina H Herrera
 
Funciones ejemplos
Funciones ejemplosFunciones ejemplos
Funciones ejemplosoriann68
 
Razón aritmética y razón geométrica
Razón aritmética y razón geométricaRazón aritmética y razón geométrica
Razón aritmética y razón geométricaAquileovelez
 
Paso a Paso para construir un marco teórico
 Paso a Paso para construir un marco teórico Paso a Paso para construir un marco teórico
Paso a Paso para construir un marco teóricoJosé Davidd Meza
 

Destacado (20)

Conceptosade
ConceptosadeConceptosade
Conceptosade
 
Estadística 1º parte
Estadística 1º parteEstadística 1º parte
Estadística 1º parte
 
Tema 3 variables 2014
Tema 3 variables  2014Tema 3 variables  2014
Tema 3 variables 2014
 
Verdadera longitud de una linea
Verdadera longitud de una lineaVerdadera longitud de una linea
Verdadera longitud de una linea
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Mola hidatidiforme mia
Mola hidatidiforme miaMola hidatidiforme mia
Mola hidatidiforme mia
 
Funciones de Variación
Funciones de VariaciónFunciones de Variación
Funciones de Variación
 
Variables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CVariables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en C
 
Fundamentos de programación Java
Fundamentos de programación JavaFundamentos de programación Java
Fundamentos de programación Java
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Cronograma de actividades del proyecto de investigacion
Cronograma  de actividades del proyecto de investigacionCronograma  de actividades del proyecto de investigacion
Cronograma de actividades del proyecto de investigacion
 
Las variables en una investigacion cientifica
Las variables en una investigacion cientificaLas variables en una investigacion cientifica
Las variables en una investigacion cientifica
 
Razón Geométrica
Razón GeométricaRazón Geométrica
Razón Geométrica
 
Hipotesis de investigacion
Hipotesis de investigacionHipotesis de investigacion
Hipotesis de investigacion
 
Funciones ejemplos
Funciones ejemplosFunciones ejemplos
Funciones ejemplos
 
Variables de investigación
Variables de investigaciónVariables de investigación
Variables de investigación
 
CRONOGRAMA DE ACTIVIDADES
CRONOGRAMA DE ACTIVIDADESCRONOGRAMA DE ACTIVIDADES
CRONOGRAMA DE ACTIVIDADES
 
Razón aritmética y razón geométrica
Razón aritmética y razón geométricaRazón aritmética y razón geométrica
Razón aritmética y razón geométrica
 
Paso a Paso para construir un marco teórico
 Paso a Paso para construir un marco teórico Paso a Paso para construir un marco teórico
Paso a Paso para construir un marco teórico
 

Similar a 8. Uso De Variables De Tipo Referencia

3. Uso De Variables De Tipo Valor
3.  Uso De Variables De Tipo Valor3.  Uso De Variables De Tipo Valor
3. Uso De Variables De Tipo ValorEsteban Soraire
 
3. elementos del lenguaje. variables y estructuras de datos
3.  elementos del lenguaje. variables y estructuras de datos3.  elementos del lenguaje. variables y estructuras de datos
3. elementos del lenguaje. variables y estructuras de datosPablo Pacheco
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxgalletasdecoco84
 
tposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptxtposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptxErrol31
 
Unidad i antecedentes1
Unidad i antecedentes1Unidad i antecedentes1
Unidad i antecedentes1BrayanBaffz
 
Programación - Clase 1
Programación - Clase 1Programación - Clase 1
Programación - Clase 1Jaime Lara
 
1 1 2 Datos Primitivas Y Objetos
1 1 2 Datos Primitivas Y Objetos1 1 2 Datos Primitivas Y Objetos
1 1 2 Datos Primitivas Y ObjetosUVM
 
Lenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicLenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicRokr02
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4kayrambal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02kevinwm17
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosAntonio Palomares Sender
 

Similar a 8. Uso De Variables De Tipo Referencia (20)

3. Uso De Variables De Tipo Valor
3.  Uso De Variables De Tipo Valor3.  Uso De Variables De Tipo Valor
3. Uso De Variables De Tipo Valor
 
3. lenguaje c-
3. lenguaje c-3. lenguaje c-
3. lenguaje c-
 
3. elementos del lenguaje. variables y estructuras de datos
3.  elementos del lenguaje. variables y estructuras de datos3.  elementos del lenguaje. variables y estructuras de datos
3. elementos del lenguaje. variables y estructuras de datos
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
 
tposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptxtposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptx
 
Unidad i antecedentes1
Unidad i antecedentes1Unidad i antecedentes1
Unidad i antecedentes1
 
Java
JavaJava
Java
 
Semana9b Vbr
Semana9b VbrSemana9b Vbr
Semana9b Vbr
 
Programación - Clase 1
Programación - Clase 1Programación - Clase 1
Programación - Clase 1
 
1 1 2 Datos Primitivas Y Objetos
1 1 2 Datos Primitivas Y Objetos1 1 2 Datos Primitivas Y Objetos
1 1 2 Datos Primitivas Y Objetos
 
Lenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN BasicLenguaje De ProgramacióN Basic
Lenguaje De ProgramacióN Basic
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4
 
Tpos de datos c#
Tpos de datos c#Tpos de datos c#
Tpos de datos c#
 
Ambiente
 Ambiente Ambiente
Ambiente
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambiente de programacin en pascal
Ambiente de programacin en pascalAmbiente de programacin en pascal
Ambiente de programacin en pascal
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
 
Tipos de datos_para_c_(2)
Tipos de datos_para_c_(2)Tipos de datos_para_c_(2)
Tipos de datos_para_c_(2)
 

Más de Esteban Soraire

Más de Esteban Soraire (20)

Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.Net
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
5. Metodos Y Parametros
5.  Metodos Y Parametros5.  Metodos Y Parametros
5. Metodos Y Parametros
 
6. Tablas
6.  Tablas6.  Tablas
6. Tablas
 
2. Introduccion A C#
2.  Introduccion A C#2.  Introduccion A C#
2. Introduccion A C#
 
1. Introduccion a .Net
1. Introduccion a .Net1. Introduccion a .Net
1. Introduccion a .Net
 
10. Herencia
10.  Herencia10.  Herencia
10. Herencia
 
8. Practica A
8.  Practica A8.  Practica A
8. Practica A
 
10. Herencia
10.  Herencia10.  Herencia
10. Herencia
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
6. Practica A
6.  Practica A6.  Practica A
6. Practica A
 
5. Metodos Y Parametros
5.  Metodos Y Parametros5.  Metodos Y Parametros
5. Metodos Y Parametros
 
4. Practica A
4.  Practica A4.  Practica A
4. Practica A
 
3. Uso De Variables De Tipo Valor
3.  Uso De Variables De Tipo Valor3.  Uso De Variables De Tipo Valor
3. Uso De Variables De Tipo Valor
 
3. Practica A
3.  Practica A3.  Practica A
3. Practica A
 
9. Creacion Y Destruccion De Objetos
9.  Creacion Y Destruccion De Objetos9.  Creacion Y Destruccion De Objetos
9. Creacion Y Destruccion De Objetos
 

8. Uso De Variables De Tipo Referencia

  • 1. Uso de variables de tipo referencia
  • 2. Notas generales  Uso de variables de tipo referencia  Uso de tipos referencia comunes  La jerarquía de objetos  Espacios de nombres en .NET Framework  Práctica A - Definición y uso de variables de tipo referencia  Conversiones de datos  Práctica B - Conversión de datos
  • 3.  Uso de variables de tipo referencia  Comparación de tipos valor y tipos referencia  Declaración y liberación de variables referencia  Referencias no válidas  Comparación de valores y comparación de referencias  Referencias múltiples a un mismo objeto  Uso de referencias como parámetros de métodos
  • 4. Comparación de tipos valor y tipos referencia  Tipos valor  La variable contiene el valor directamente  Ejemplos: char, int 4242 int mol; mol = 42; int mol; mol = 42; •• string mol; mol = “Hola"; string mol; mol = “Hola"; HolaHola  Tipos referencia  La variable contiene una referencia al dato  El dato se almacena en un área de memoria aparte
  • 5. Declaración y liberación de variables referencia  Declaración de variables referencia coordenada c1; c1 = new coordinate(); c1.x = 6.12; c1.y = 4.2; coordenada c1; c1 = new coordinate(); c1.x = 6.12; c1.y = 4.2; •• 6.126.12 4.24.2 c1 = null;c1 = null; •• 6.126.12 4.24.2  Liberación de variables referencia
  • 6. Referencias no válidas  Si hay referencias no válidas  No es posible acceder a miembros o variables  Referencias no válidas en tiempo de compilación  El compilador detecta el uso de referencias no inicializadas  Referencias no válidas en tiempo de ejecución  El sistema generará un error de excepción
  • 7. Comparación de valores y comparación de referencias  Comparación de tipos valor  == and != comparan valores  Comparación de tipos referencia  == and != comparan las referencias, no los valores •• 1.01.0 2.02.0 •• 1.01.0 2.02.0 Diferente
  • 8. Referencias múltiples a un mismo objeto  Dos referencias pueden apuntar a un mismo objeto  Dos formas de acceder a un mismo objeto para lectura/escritura coordinate c1= new coordinate ( ); coordinate c2; c1.x = 2.3; c1.y = 7.6; c2 = c1; Console.WriteLine(c1.x + " , " + c1.y); Console.WriteLine(c2.x + " , " + c2.y); coordinate c1= new coordinate ( ); coordinate c2; c1.x = 2.3; c1.y = 7.6; c2 = c1; Console.WriteLine(c1.x + " , " + c1.y); Console.WriteLine(c2.x + " , " + c2.y); •• 2.32.3 7.67.6 •• c1 c2
  • 9. Uso de referencias como parámetros de métodos  Las referencias se pueden usar como parámetros  Si se pasan por valor, es posible cambiar el dato referenciado static void PassCoordinateByValue(coordinate c) { c.x++; c.y++; } static void PassCoordinateByValue(coordinate c) { c.x++; c.y++; } loc.x = 2; loc.y = 3; PassCoordinateByValue(loc); Console.WriteLine(loc.x + " , " + loc.y); loc.x = 2; loc.y = 3; PassCoordinateByValue(loc); Console.WriteLine(loc.x + " , " + loc.y); 2 32 3 3 43 4 •• ••
  • 10.  Uso de tipos referencia comunes  Clase Exception  Clase String  Métodos, operadores y propiedades comunes de String  Comparaciones de cadenas de caracteres  Operadores de comparación en String
  • 11. Clase Exception  Exception es una clase  Los objetos Exception se usan para lanzar excepciones  Para crear un objeto Exception se usa new  Para lanzar el objeto se usa throw  Los tipos Exception son subclases de Exception
  • 12. Clase String  Cadenas de caracteres Unicode  Abreviatura de System.String  Inmutable string s = "Hola"; s[0] = 'c'; // Error al compilar string s = "Hola"; s[0] = 'c'; // Error al compilar
  • 13. Métodos, operadores y propiedades comunes de String  Corchetes  Método Insert  Propiedad Length  Método Copy  Método Concat  Método Trim  Métodos ToUpper y ToLower
  • 14. Comparaciones de cadenas de caracteres  Método Equals  Comparación de valores  Método Compare  Más comparaciones  Opción para no distinguir mayúsculas y minúsculas  Ordenación alfabética  Opciones locales de Compare
  • 15. Operadores de comparación en String  Los operadores == y != están sobrecargados para cadenas  Son equivalentes a String.Equals y !String.Equals string a = "Test"; string b = "Test"; if (a == b) ... // Devuelve true string a = "Test"; string b = "Test"; if (a == b) ... // Devuelve true
  • 16.  La jerarquía de objetos  El tipo object  Métodos comunes  Reflexión
  • 17. El tipo object  Sinónimo de System.Object  Clase base para todas las demás clases ExceptionException SystemExceptionSystemException MyClassMyClass ObjectObject StringString
  • 18. Métodos comunes  Métodos comunes para todos los tipos referencia  Método ToString  Método Equals  Método GetType  Método Finalize
  • 19. Reflexión  Es posible obtener información sobre el tipo de un objeto  Espacio de nombres System.Reflection  El operador typeof devuelve el tipo de un objeto  Sólo para clases en tiempo de compilación  Método GetType en System.Object  Información sobre clases en tiempo de ejecución
  • 20.  Espacios de nombres en .NET Framework  Espacio de nombres System.IO  Espacio de nombres System.Xml  Espacio de nombres System.Data  Otros espacios de nombres útiles
  • 21. Espacio de nombres System.IO  Acceso a entrada/salida del sistema de archivos  File, Directory  StreamReader, StreamWriter  FileStream  BinaryReader, BinaryWriter
  • 22. Espacio de nombres System.Xml  Compatibilidad con XML  Estándares de XML
  • 23. Espacio de nombres System.Data  System.Data.SqlClient  SQL Server .NET Data Provider  System.Data  Consta básicamente de las clases que constituyen la arquitectura ADO.NET
  • 24. Otros espacios de nombres útiles  Espacio de nombres System  Espacio de nombres System.Net  Espacio de nombres System.Net.Sockets  Espacio de nombres System.Windows.Forms
  • 25. Práctica A - Definición y uso de variables de tipo referencia
  • 26.  Conversiones de datos  Conversión de tipos valor  Conversiones padre/hija  El operador is  El operador as  Conversiones y el tipo object  Conversiones e interfaces  Boxing y unboxing
  • 27. Conversión de tipos valor  Conversiones implícitas  Conversiones explícitas  Operador de cast  Excepciones  Clase System.Convert  Control interno de conversiones
  • 28. Conversiones padre/hija  Conversión a referencia de clase padre  Implícita o explícita  Siempre tiene éxito  Siempre se puede asignar a un objeto  Conversión a referencia de clase hija  Es necesario cast explícito  Comprueba que la referencia es del tipo correcto  Si no lo es, causa una excepción InvalidCastException
  • 29. El operador is  Devuelve true si es posible realizar una conversión Pajaro b; if (a is Pajaro) b = (Pajaro) a; // No hay problema else Console.WriteLine("No es Pájaro"); Pajaro b; if (a is Pajaro) b = (Pajaro) a; // No hay problema else Console.WriteLine("No es Pájaro");
  • 30. El operador as  Hace conversiones entre tipos referencia, como cast  En caso de error  Devuelve null  No causa una excepción Pajaro b = a as Pajaro; // Convertir if (b == null) Console.WriteLine("No es Pájaro”); Pajaro b = a as Pajaro; // Convertir if (b == null) Console.WriteLine("No es Pájaro”);
  • 31. Conversiones y el tipo object  El tipo object es la base para todas las clases  Se puede asignar a object cualquier referencia  Se puede asignar cualquier variable object a cualquier referencia  Con conversión de tipo y comprobaciones  El tipo object y el operador is object buey; buey = a; buey = (object) a; buey = a as object; object buey; buey = a; buey = (object) a; buey = a as object; b = (Pajaro) buey; b = buey as Pajaro; b = (Pajaro) buey; b = buey as Pajaro;
  • 32. Conversiones e interfaces  Una interfaz sólo se puede usar para acceder a sus propios miembros  No es posible acceder a otros miembros y variables de la clase a través de la interfaz
  • 33. Boxing y unboxing  Sistema de tipos unificado  Boxing  Unboxing  Llamadas a métodos de object en tipos valor int p = 123; object box; box = p; int p = 123; object box; box = p; •• 123123 123123 p = (int)box;p = (int)box;
  • 34. Práctica B - Conversión de Datos