martes, 15 de diciembre de 2009

Curso de Programación C #: Conversion de Tipos de Datos

Conversión de Tipos de Datos en C#
Las conversiones nos permiten que una expresión de un tipo sea tratada como una expresión de otro tipo, dichas conversiones pueden ser implícitas o explícitas, por ejemplo la conversión de un tipo int a long es implícita, sin embargo la conversión de un tipo long a un tipo int es explícita, esto debido a que un int puede ser expresado en formato long sin que haya perdida de precisión en la operación, sin embargo si intentamos convertir un numero long a int puede haber perdida de precisión y se necesita una conversión explícita, es como una forma de obligarnos a demostrar que estamos conscientes de que existe tal perdida de precisión y en verdad es muy útil.
+ Conversión Implícita
- No requiere sentencias adicionales
- Puede perder precisión, pero no magnitud
+ Conversión Explícita
- La define el usuario utilizando la expresión (cast)
- El operador "as" la convierte a un valor de tipo específico
- Utilizar operadores "checked" y "uncheked"
Ejemplo:
int miNumero = 13;
float miOtroNumero = miNumero;
En este caso no es necesaria una conversión explícita debido a que un número int puede ser expresado sin ningún problema.
float miNumero = 13.5;
int miOtroNumero = (int) miNumero;
En este caso si es necesaria una conversión explícita debido a que un número float no puede ser expresado en int sin que haya perdida de precisión, en este caso si ejecutaramos la siguiente instrucción: Console.WriteLine("Numero Float:{0} Numero Int:{1}",miNumero,miOtroNumero); se imprimiría en pantalla Numero Float: 13.5 Numero Int: 13 ahi podemos apreciar con claridad la perdida de precisión debido a que se trunca todo aquello que se haya después del punto, cabe hacer la aclaración que no se redondea, es decir no se eleva al entero más próximo, sino que se trunca.

Operadores "checked" y "unchecked"
Los operadores checked y unchecked, se utilizan para controlar la verificación de ovewflow, de operaciones y conversiones aritméticas.
+ Expresión Verificada:
- checked ( expression )
+ Expresión no Verificada:
- unchecked ( expression )

Estructuras de Datos
+ Declaración:
struct + nombreEstructura + { miembros };
+ Uso:
- Primero declaramos la estructura:
struct coordenada
{
int x; int y;
}
- Después declaramos un objeto de ese tipo:
coordenada miCoordenada;
- Y accesamos a los elementos usando el operador . :
miCoordenada.x = 1;
miCoordenada.y = 2;
Un tipo de estructura es un tipo de valor y puede crear constantes, campos, métodos, propiedades, índices, operadores, constructores de instancias, constructores estáticos y tipos anidados.
Diferencias entre clases y estructuras
+ Estructura
- Contiene datos simples
- Tipo de Valor
+ Clase
- Objeto enriquecido con referencias
- Tipo de Referencia
Ahi pocas diferencias entre estructuras y clases, pero son realmente significativas, las estructuras sirven para representar conjuntos de datos y pueden contener datos y funciones, sin embargo las estructuras son tipos de valor y no requieren espacio en la pila, ya que los datos están contenidos directamente en la estructura, mientras que una variable en una clase contiene una referencia a los datos, esto es lo que se conoce como objeto.

Enúmerados
Una declaración enum declara un nuevo tipo enumerado e inicia con la palabra clave enum y define el nombre, la accesibilidad, el tipo y los miembros del enumerador. Cada tipo de enumerador tiene un tipo, dicho tipo debe poder representar todos los valores de numerador definidos en la enumeración. Un enumerado puede declararse de manera explícita un tipo como byte, sbyte, short, ushort, int, uint, long o ulong, cualquier enumerado que no indica de manera explícita su tipo es int.
+ Declaración:
enum + nombreDelEnumerado + { valores }
+ Ejemplo:
enum Color{ blanco,rojo,azul,verde };
+ Uso:
Color miColor;
miColor = Color.blanco;
miColor = (Color) 1;

Arreglos
Los arreglos son una colección de elementos o de objetos todos del mismo tipo y que se encuentran indexados para poder acceder a ellos de una manera sencilla, son realmente faciles de usar, ahi diferentes tipos de arreglos Ahi dos formas de declarar arreglos en C#
+ Declaración con tipo y forma pero sin límites
- int[] unidimensional;
- int[,] bidimensional;
- int [][] jagged;

NOTA: Los arreglos del tipo jagged son arreglos de arreglos.
+ Declaración utilizando new con límites o inicializadores
- unidimensional = new int[20];
- bidimendional = new int[20,20];
- jagged = new int[10][];
- jagged[0] = new int[][10];

No hay comentarios:

Publicar un comentario