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