El lenguaje C# El último en una línea de evolución de los lenguajes derivados de C, que incluye C++ y Java Usado por Microsoft para desarrollar la mayoría del código de .NET Creada con .NET en mente, por tanto es el lenguaje ideal para el desarrollo en .NET C# introduce varias mejoras sobre C++ en las áreas de seguridad de datos, versionamiento, eventos y recolección de basura C# provee acceso a SO y COM APIs y soporta el modo unsafe que permite el uso de punteros como en C Más simple que C++ pero tan poderoso y flexible
Estructura de un programa C# I Un programa en C# contiene: Uno o más ficheros los cuales contienen: Uno o más espacios de nombres que contienen: Tipos de datos: clases, estructuras, interfaces, enumeraciones y delegates Si no se declara un namespace se asume el global por defecto Un programa ejecutable ha de contener obligatoriamente una función Main static void Main() static int Main() static void Main(string[] args) static int Main(string[] args) Para acceder a un tipo podemos usar un camino absoluto: System.Console.WriteLine(…); o: using System; …; Console.WriteLine(…);
Estructura de un programa C# II namespace N1 { class C1 { // … } struct S1 { // … } interface I1 { // … } delegate int D1(); enum E1 { // … } }
Identificadores Identificadores: Se usan para dar nombres a elementos de un programa como variables, constantes y métodos Consta de caracteres alfanuméricos y ‘_’, es sensible a mayúsculas y minúsculas, debe comenzar con letra o ‘_’ Si se quiere usar un identificador como palabra clave hay que usar como prefijo el carácter ‘@’: Object @this; // prevenir conflicto con "this"
Variables I Una variable en C# representa la localización en memoria donde una instancia de un tipo es guardada Es simplemente una capa encima del sistema de tipos independiente del lenguaje de .NET (CTS) Recordar distinción entre tipos por valor y por referencia Tipos por valor son tipos simples como ‘int’, ‘long’ y ‘char’ Los objetos, strings y arrays son ejemplos de tipos por referencia
Variables II Las variables por valor pueden declararse e iniciarse: bool bln = true; byte byt1 = 22; char ch1=‘x’, ch2=‘u0066’; // Unicode para ‘a’ decimal dec1 = 1.23M; double dbl1=1.23, dbl2=1.23D; short sh = 22; int i = 22; long lng1 =22, lng2 =22L; // ‘L’ long sbyte sb = 22; float f=1.23F; ushort us1=22; uint ui1=22, ui2=22U; // ‘U’ unsigned ulong ul1 =22, ul2=22U, ul3=22L, ul4=2UL;
Variables III Los valores por referencia son creados con la palabra clave new: object o = new System.Object(); Strings se pueden inicializar directamente: string s = "Hola"; // usan caracteres Unicode de 2 cars C# soporta secuencias de escape como en C: string s1 = "Holan"; // salto de línea string s2 = "Holatquettal"; // tabulador Como las sentencias de escape comienzan con ‘’, para escribir este carácter hay que doblarlo, o usar ‘@’: string s3 = "c:/WINNT"; string s4 = @"C:WINNT";
Constantes C# provee el modificador const que se puede usar para crear constantes de programas:
const int min = 1; const int max = 100; Const int range = max – min;
Arrays Los arrays son tipos por referencia y sus índices comienzan en 0: string[] a; El tipo de datos viene dado por string[], el nombre del array es una referencia al array Para crear espacio para los elementos usar: string[] a = new string[100] Los arrays se pueden inicializar directamente: string[] a1 = {"gato", "perro", "caballo"} int[] a2 = {1, 2, 3}; Puede haber arrays multidimensionales y arrays de arrays: string[,] ar = {{"perro", "conejo"}, {"gato", "caballo"}} int[][] matrix; object[] ar = {3, "cat", 2.45}; // Los elementos de un array mismo tipo string animal=(string)ar[1];
Expresiones y Operadores I Las expresiones en C# son muy similares a las de C y C++ Operadores aritméticos: + , Suma unaria , +a – , Resta unaria, -a ++, Incremento, ++a o a++ –, Decremento, –a o a– +, Suma, a+b -, Resta, a-b *, Multiplicación, a*b /, División, a/b %, Resto, a%b
Expresiones y Operadores II Operadores relacionales: == , Igualdad , a==b != , Inigualdad, a!=b <, Menor que, a<=, Menor o igual, a<=b >, Mayor que, a>b >=, Mayor que o Igual a, a>=b Los programadores de Visual Basic deben notar que se usa ‘==‘ en vez de ‘=‘ para igualdad, ‘!=‘ para desigualdad en vez de ‘<>’ e ‘=‘ para asignación
<=, Menor o igual, a<=b >, Mayor que, a>b >=, Mayor que o Igual a, a>=b Los programadores de Visual Basic deben notar que se usa ‘==‘ en vez de ‘=‘ para igualdad, ‘!=‘ para desigualdad en vez de ‘<>’ e ‘=‘ para asignación
, Mayor que, a>b >=, Mayor que o Igual a, a>=b Los programadores de Visual Basic deben notar que se usa ‘==‘ en vez de ‘=‘ para igualdad, ‘!=‘ para desigualdad en vez de ‘<>’ e ‘=‘ para asignación
Expresiones y Operadores III Operadores relacionales: ! , Negación , !a & , And binario, a&b |, Or binario, a|b ^, Or exclusivo, a^b ~, Negación binaria, ~a &&, And lógico, a&&b ||, Or lógico, a||b Operadores de manipulación de bits: int i1=32; int i2=i1<<2; // i2==128 int i3=i1>>3; // i3==4
Expresiones y Operadores IV Operadores de asignación (para a==3 y b==7): = , a=b , 7 += , a+=b, 10 -=, a-=b, -4 *=, a*=b, 21 /=, a/=b, 0 %=, a%=b, 3 |=, a|=b, 7 >>=, a>>=b, 0 <<=, a<<=b, 384 Operadores de manipulación de bits: int i1=32; int i2=i1<<2; // i2==128 int i3=i1>>3; // i3==4
Expresiones y Operadores V Otros operadores: min=a