ݺߣ

ݺߣShare a Scribd company logo
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
42
int mol;
mol = 42;
•
string mol;
mol = “Hola";
Hola
 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;
• 6.12 4.2
c1 = null;
• 6.12 4.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.0 2.0
• 1.0 2.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);
•
2.3 7.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++;
}
loc.x = 2; loc.y = 3;
PassCoordinateByValue(loc);
Console.WriteLine(loc.x + " , " + loc.y);
2 3 3 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
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
 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
Exception
SystemException
MyClass
Object
String
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");
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”);
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;
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;
• 123
123 p = (int)box;
Práctica B - Conversión de Datos

More Related Content

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 42 int mol; mol = 42; • string mol; mol = “Hola"; Hola  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; • 6.12 4.2 c1 = null; • 6.12 4.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.0 2.0 • 1.0 2.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); • 2.3 7.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++; } loc.x = 2; loc.y = 3; PassCoordinateByValue(loc); Console.WriteLine(loc.x + " , " + loc.y); 2 3 3 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
  • 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
  • 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 Exception SystemException MyClass Object String
  • 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");
  • 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”);
  • 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; 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; • 123 123 p = (int)box;
  • 34. Práctica B - Conversión de Datos