Está en la página 1de 4

Universidad Mariano Glvez de Guatemala Ingeniero: Guillermo Marroqun Curso: Programacin

Investigacin: Variables y tipos de datos Visual C#

Marco Antonio Aguirre Cruz Carn: 0900-08-2409 Guatemala, 25 de febrero de 2011

Una variable puede verse simplemente como un hueco en el que se puede almacenar un objeto de un determinado tipo al que se le da un cierto nombre. Para poderla utilizar slo hay que definirla indicando cul ser su nombre y cul ser el tipo de datos que podr almacenar, lo que se hace siguiendo la siguiente sintaxis: <tipoVariable> <nombreVariable>; Una variable puede ser definida dentro de una definicin de clase, en cuyo caso se correspondera con el tipo de miembro que hasta ahora hemos denominado campo. Tambin puede definirse como un variable local a un mtodo, que es una variable definida dentro del cdigo del mtodo a la que slo puede accederse desde dentro de dicho cdigo. Otra posibilidad es definirla como parmetro de un mtodo, que son variables que almacenan los valores de llamada al mtodo y que, al igual que las variables locales, slo puede ser accedida desde cdigo ubicado dentro del mtodo. El siguiente ejemplo muestra cmo definir variables de todos estos casos: class A { int x, z; int y; void F(string a, string b) { Persona p; } } En este ejemplo las variables x, z e y son campos de tipo int, mientras que p es una variable local de tipo Persona y a y b son parmetros de tipo string. Como se muestra en el ejemplo, si un mtodo toma varios parmetros las definiciones de stos se separan mediante comas (carcter,), y si queremos definir varios campos o variables locales (no vlido para parmetros) de un mismo tipo podemos incluirlos en una misma definicin incluyendo en sus nombres separados por comas. Con la sintaxis de definicin de variables anteriormente dada simplemente definimos variables pero no almacenamos ningn objeto inicial en ellas. El compilador dar un valor por defecto a los campos para los que no se indique explcitamente ningn valor segn se explica en el siguiente apartado. Sin embargo, a la variables locales no les da ningn valor inicial, pero detecta cualquier intento de leerlas antes de darles valor y produce errores de compilacin en esos casos. Ya hemos visto que para crear objetos se utiliza el operador new. Por tanto, una forma de asignar un valor a la variable p del ejemplo anterior sera as: Persona p; p = new Persona ("Jos", 22, "76543876-A"); Sin embargo, C# tambin proporciona una sintaxis ms sencilla con la que podremos asignar un objeto a una variable en el mismo momento se define. Para ello se la ha de definir usando esta otra notacin: <tipoVariable> <nombreVariable> = <valorInicial>; As por ejemplo, la anterior asignacin de valor a la variable p podra rescribirse de esta otra forma ms compacta: Persona p = new Persona("Jos", 22, "76543876-A"); La especificacin de un valor inicial tambin combinarse con la definicin de mltiples variables separadas por comas en una misma lnea. Por ejemplo, las siguientes definiciones son vlidas:

Persona p1 = new Persona("Jos", 22, "76543876-A"), Persona p2 = new Persona("Juan", 21, "87654212-S"); Y son tratadas por el compilador de forma completamente equivalentes a haberlas declarado como: Persona p1 = new Persona("Jos", 22, "76543876-A"); Persona p2 = new Persona("Juan", 21, "87654212-S");

Tipos de datos bsicos


Los tipos de datos bsicos son ciertos tipos de datos tan comnmente utilizados en la escritura de aplicaciones que en C# se ha incluido una sintaxis especial para tratarlos. Por ejemplo, para representar nmeros enteros de 32 bits con signo se utiliza el tipo de dato System.Int32 definido en la BCL, aunque a la hora de crear un objeto a de este tipo que represente el valor 2 se usa la siguiente sintaxis: System.Int32 a = 2; Como se ve, no se utiliza el operador new para crear objeto System.Int32, sino que directamente se indica el literal que representa el valor a crear, con lo que la sintaxis necesaria para crear entero de este tipo se reduce considerablemente. Es ms, dado lo frecuente que es el uso de este tipo tambin se ha predefinido en C# el alias int para el mismo, por lo que la definicin de variable anterior queda as de compacta: int a = 2; System.Int32 no es el nico tipo de dato bsico incluido en C#. En el espacio de nombres System se han incluido todos estos: Tipo SByte Byte Int16 UInt16 Int32 UInt32 Int64 Descripcin Bytes con signo Bytes sin signo Enteros cortos con signo Enteros cortos sin signo Enteros normales Enteros normales sin signo Enteros largos Bits 8 8 16 16 32 32 64 Rango de valores [-128, 127] [0, 255] [-32.768, 32.767] [0, 65.535] [-2.147.483.648, 2.147.483.647] [0, 4.294.967.295] [9.223.372.036.854.775.808, 9.223.372.036.854.775.807] [018.446.744.073.709.551.615] [1,510-45 - 3,41038] [5,010-324 - 1,710308] [1,010-28 - 7,91028] true, false [\u0000, \uFFFF] El permitido por la memoria Alias sbyte byte short ushort int uint long

UInt64 Single Double Decimal Boolean Char String

Enteros largos sin signo Reales con 7 dgitos de precisin Reales de 15-16 dgitos de precisin Reales de 28-29 dgitos de precisin Valores lgicos Caracteres Unicode Cadenas de caracteres

64 32 64 128 32 16 Variable

ulong float double decimal bool char string

Object

Cualquier objeto

Variable

Cualquier objeto

object

Pese a su sintaxis especial, en C# los tipos bsicos son tipos del mismo nivel que cualquier otro tipo del lenguaje. Es decir, heredan de System.Object y pueden ser tratados como objetos de dicha clase por cualquier mtodo que espere un System.Object, lo que es muy til para el diseo de rutinas genricas que admitan parmetros de cualquier tipo y es una ventaja importante de C# frente a lenguajes similares como Java donde los tipos bsicos no son considerados objetos. El valor que por defecto se da a los campos de tipos bsicos consiste en poner a cero todo el rea de memoria que ocupen. Esto se traduce en que los campos de tipos bsicos numricos se inicializan por defecto con el valor 0, los de tipo bool lo hacen con false, los de tipo char con \u0000, y los de tipo string y object con null. Ahora que sabemos cules son los tipos bsicos, es el momento de comentar cules son los sufijos que admiten los literales numricos para indicar al compilador cul es el tipo que se ha de considerar que tiene. Por ejemplo, si tenemos en una clase los mtodos: public static void F(int x) {...} public static void F(long x) {...} Ante una llamada como F(100), a cul de los mtodos se llamara? Pues bien, en principio se considera que el tipo de un literal entero es el correspondiente al primero de estos tipos bsicos que permitan almacenarlo: int, uint, long, ulong, por lo que en el caso anterior se llamara al primer F() Para llamar al otro podra aadirse el sufijo L al literal y hacer la llamada con F(100L) En la Tabla 6 se resumen los posibles sufijos vlidos: Sufijo ninguno L l[9] Uu UL, Ul, uL, ul, LU, Lu, lU lu Tipo del literal entero Primero de: int, uint, long, ulong Primero de: long, ulong Primero de: int, uint ulong

Por su parte, en la siguiente tabla se indican los sufijos que admiten los literales reales: Sufijo Ff ninguno, D d Mm Tipo del literal real float double decimal

También podría gustarte