lenguajes de programación: tutorial csharp
Post on 13-Jan-2017
50 views
Embed Size (px)
TRANSCRIPT
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
Tutorial Csharp
Variables y Constantes
Una variable o una constante representan un posicin de memoria ocupada por un tipo de
dato. Una varible puede ser local, el parmetro de un mtodo, el elemento de un array, un
campo de una instancia de un objeto o un campo esttico de un objeto, y su valor puede ser
modificado, en cambio, el valor de una constante siempre es el mismo.
string saludo = "hola";
const double pi = 3.1415;
Dado que C# es fuertemente tipificado todas las variables y constantes tienen asociado un
tipo que define los posibles valores que puede tomar.
En C# a todas las variables y constantes se les debe asignar un valor antes de poder utilizarlas.
Esta asignacin de valor puede ser tanto explcita como automtica a travs de la asignacin
del valor por defecto para un tipo. Estos son los valores por defecto para los diferentes tipos:
Tipo Valor por defecto
tipos numricos 0
bool false
char '\0'
enumeraciones 0
referencias null
Cuando intentamos utilizar una variable sin asignarle un valor se producir un error como
sucede con el siguiente ejemplo:
// variable.cs
using System;
public class Variable
{
int v;
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
public Variable() {} // v = valor por
defecto
public Variable(int a) { v = a; } // v = a
static void Main()
{
Variable[] variable = new Variable[2]; // declaramos un array
Console.WriteLine(variable[1]); // ok, valor por defecto
Variable v;
console.WriteLine(v); // error, v sin asignar
}
}
Espacios de nombres
En C# se podemos utilizar espacios de nombres para agrupar de forma lgica ciertas
porciones de cdigo de forma que se les asocia un nombre para su uso. Si no utilizamos
explcitamente ningn espacio de nombres estaremos utilizando el espacio de nombres
global, como se hace en el primer ejemplo holamundo.cs. Veamos ahora como utilizar
explcitamente el espacio de nombres System en holamundo2.cs de forma que no tengamos
que escribir System. cada vez que nos queramos referir a alguna variable, clase, ... que est
definida en su interior. Para ello deberemos emplear using.
// holamundo2.cs
using System; // espacio de nombres que usaremos
public class HolaMundo2
{
public static void Main()
{
Console.WriteLine("Hola, Mundo!");
}
}
Para definir un espacio de nombres deberemos utilizar la palabra namespace. En el siguiente
ejemplo se definen dos clases llamadas Prueba en dos espacios de nombres diferentes. Los
nombres completos de estas clases sern Espacio1.Prueba y Espacio2.Prueba. Para poder
utilizarlos empleando solamente Prueba deberemos especificar en que espacio de nombres
est dicha clase utilizando previamente using.
// espacios.cs
using System; // usaremos el espacio de nombres System
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
namespace Espacio1 // declaracin del espacio de nombres
Espacio1
{
public class Prueba
{
public Prueba()
{
Console.WriteLine("Espacio1.Prueba");
}
}
}
namespace Espacio2 // declaracin del espacio de nombres Espacio2
{
public class Prueba
{
public Prueba()
{
Console.WriteLine("Espacio2.Prueba");
}
}
}
using Espacio2; // usaremos el espacio de nombres Espacio2
public class Namespace
{
public static void Main()
{
Prueba p = new Prueba();
}
}
Espacios de nombres anidados
Los espacios de nombres pueden anidarse, es decir, definirse dentro de otros espacios de
nombres. Para ello no tendremos ms que encerrara la declaracin de un espacio de nombres
dentro de la de otro espacio de nombres. Para referirnos a las declaraciones del espacio
interior habremos de utilizar la clausula using seguida de todos los espacios de nombres
unidos mediante un punto o referirnos a un tipo empleando su nombre completo.
// anidado.cs
using System;
namespace Exterior
{
namespace Interior
{
class Hola
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
{
public Hola() { Console.WriteLine("Hola!"); }
}
}
}
using Exterior.Interior;
class EspacioNombresAnidado
{
public static void Main()
{
Hola hola = new Hola();
// alternativamente se podra haber utilizado:
// Exterior.Interior.Hola hola = new Exterior.Interior.Hola();
}
}
Alias
En C# se pueden crear alias de tipos y espacios de nombres, con lo que podremos referirnos
a ciertos tipos y espacios de nombres utilizando otro nombre distinto al que tienen en su
declaracin.
// alias.cs
using sys = System; // alias de espacio de nombres
using cadena = System.String; // alias de tipo
class Alias
{
public static void Main()
{
cadena c = "Hola, mundo!";
sys.Console.WriteLine(c); // hola, mundo!
sys.Console.WriteLine(c.GetType()); // System.String
}
}
Identificadores y palabras clave
Los identificadores son los nombre que elegimos para nuestros variables, clases, etc. Un
identificador debe ser una palabra completa compuesta de caracteres unicode y que comience
por una letra o un guin bajo (_) y que no sea igual que una palabra clave del lenguaje. Como
un caso especial podremos utilizar @ como prefijo de un identificador si queremos que este
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
se llame igual que una palabra reservada por el lenguaje, pero sin que
se considere parte de l. As las variables x y @x son iguales. Las letras maysculas y
minsculas crean identificadores diferentes.
Las palabras clave de C# son:
abstract event new struct as explicit null switch
base extern object this bool false operator throw
break finally out true byte fixed override try
case float params typeof catch for private uint
char foreach protected ulong checked goto public unchecked
class if readonly unsafe const implicit ref ushort
continue in return using decimal int byte virtual
default interface sealed volatile delegate internal short void
do is sizeof while double lock stackalloc else
long static enum namespace string
Tipos predefinidos
Los tipos predefinidos en C# son alias de tipos en el espacio de nombres System. Aqu
podemos ver la lista completa de los mismos:
Tipo C# Clase System
Bool System.Boolean
Byte System.Byte
Sbyte System.SByte
Char System.Char
Decimal System.Decimal
Doubl System.Double
Tipo C# Clase System
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
object System.Object
short System.Short
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
Float System.Single
ushort System.UShort
string System.String
A todos estos tipos, salvo object y string, se les denomina tipos simples. Todos los tipos y
sus alias pueden utilizarse indistintamente. De esta forma podemos declarar un entero
utilizando tanto int como System.Int32:
int x = 123;
System.Int32 x = 123;
Para mostrar el nombre de cualquier tipo C# podemos utilizar el mtodo GetType() o el
operador typedef.
Console.WriteLine(x.GetType());
Tipos valor y tipos referencia
Todos los tipos en C# pertenecen a una de las siguientes tres categoras, cuya diferencia
fundamental entre estas tres categorias es la forma en que son tratados en memoria.
Tipos valor: enum, struct
Tipos referencia: array, class, delegate, interface
Tipo puntero
Tipos valor
Estos tipos son los ms sencillos de comprender. Directamente contienen los datos, por
ejemplo, un tipo int contiene su valor, o un tipo bool vale true o false. Una de sus
caractersticas es que cuando se asignan el valor de una variable a otra, se crea una copia de
dicho valor.
// valor.cs
using System;
class Valor
{
static void Main()
{
int x = 3;
int y = x; // y es una copia de x
Pontificia Universidad Catlica del Ecuador
Mtr. Luis Fernando Aguas B.
++x; // incrementa x a 4
Console.WriteLine("x = {0} y = {1}", x, y);
}
}
Este ejemplo crea dos variables de tipo int, x e y. Inicialmente x vale 3 e y pasa a ser una
copia de x. Al incrementar el valor de x, el valor de y no cambia puesto que ambos valores
son copias independientes en memoria.
Todos los tipos simples y sus combinaciones a travs de structs pertenecen a esta categora.
Tipos referencia
Los tipos referencia son algo ms complejos. En un tipo referencia hemos de diferenciar entre
un objeto y una referencia a un objeto. Veamos con un ejemplo cada un