Fundamentos básicos del lenguaje C#
Parte 1 Introducción a C#
Porque C# ? Primer lenguaje orientado a componentes Basado en la experiencia de Component Object Model+ Soporte nativo para Namespaces Versionamiento Desarrollo basado en atributos El poder de C con la facilidad de VB Curva de aprendizaje mínima Mucho más limpio que C++ Más estructurado que VB
Sección 2: Elementos de C# Forma y estructura Entendiendo los tipos del sistema Entendiendo el lenguaje C#
Forma y Estructura No hay archivos de encabezamiento (.H) No es necesario “declarar” las clases y los tipos La declaración y el código están en un solo lugar Hace que el código sea más consistente y mantenible Facilita la colaboración a nivel equipo de desarrollo Declaraciones accesibles: Metadata Compilación condicional pero sin macros
Tipos definidos por el Sistema Construido sobre el Common Type System Conceptos básicos: Todo es un objeto Todo tiene herencia implícita de System.Object Distinción entre valores y referencias Por valor: tipos simples, enumeradores, estructuras Por referencia: interfaces, clases, vectores
Tipos Simples Enteros byte, sbyte (8bit), short, ushort (16bit) int, uint (32bit), long, ulong (64bit) IEEE Floating Point double (precisión de dígitos) float (precisión de 7 dígitos) Numéricos exactos Decimal (28 dígitos significativos) Cadenas de caracteres char string (referencia) Boolean bool (no es intercambiable con int)
Enums Colección de elementos nombrados Fuertemente tipeados Mejor usar "color.Azul" que "3" Mas legibilidad del código Tan liviano cómo un int Ejemplo: enum Color { Rojo, Verde, Azul, Amarillo };
Vectores Inician en cero, vinculados por tipo Basadas en la clase System.Array de.NET Declaración con tipo y forma, pero sin límite int[] SingleDim; int[,] TwoDim; int [][] Jagged; Creación utilizando new con límites o inicializadores SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3},{4,5,6}}; Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3}
Interfaces Declaración del contrato semántico entre partes Permite la orientación a componentes Define la estructura y la semántica para propósitos específicos Definición de métodos y propiedades abstractos Soporta herencia (múltiple) Ejemplo: interface IPersonaEdad { int AnioDeNacimiento {get; set;} int Edad(); }
public class Persona : IPersonaEdad { private int iAnio; public Persona() { } public int AnioDeNacimiento { get { return iAnio;}; set { iAnio = value;}; } public int Edad() { return Today()- AnioDeNacimiento }; } Clases Implementación de código y datos Implementa interfaces Herencia simple Las clases contienen: Campos: variables miembro Propiedades: valores accedidos a través de get/set Métodos: funcionalidad Especiales: eventos, Indexadores, Delegates
Estructuras Un grupo de código y datos Similar a las clases pero: No permite herencia Siempre son pasadas por valor Clases vs. Estructuras Estructuras Contenedor de datos liviano, por valor Clases objetos, tipo referenciados Desarrolladores C++! struct no es un class donde todo es público Ejemplo: struct Point { double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; } }
Todo programa en C# contiene al menos una clase. ! Main es el punto de entrada del programa. ! Console.WriteLine(“...” ), visualiza un mensaje, invocando método WriteLine de la clase Console. ! El espacio de nombres System pertenece a.NET FCL (Framework Class Library). ! FCL contiene muchas clases útiles, que pueden usarse desde nuestras aplicaciones.NET. // fichero: hola.cs using System; class Hola { public static void Main( ) { Console.WriteLine(“Hola Món”); }