Anda di halaman 1dari 8

TIPOS DE DATOS, OPERADORES Y PALABRAS RESERVADAS EN

C#

TIPOS DE DATOS

C# es un lenguaje fuertemente tpiado. Todas las variables y constantes tienen un tipo, al igual
que toda expresin que da como resultado un valor. Cada firma de mtodo especifica un tipo
para cada parmetro de entrada y para el valor devuelto. La biblioteca de clases .NET
Framework define un conjunto de tipos numricos integrados y tipos ms complejos que
representan una amplia variedad de construcciones lgicas, como el sistema de archivos,
conexiones de red, colecciones y matrices de objetos y fechas. Un programa tpico de C# usa los
tipos de la biblioteca de clases, as como tipos definidos por el usuario que modelan los
conceptos especficos del dominio problemtico del programa.
La informacin almacenada en un tipo puede incluir lo siguiente:
El espacio de almacenamiento que requiere una variable del tipo.
Los valores mximo y mnimo que puede representar.
Los miembros (mtodos, campos, eventos, etc.) que contiene.
El tipo base del que hereda.
La ubicacin donde se asignar la memoria para las variables en tiempo de ejecucin.
Los tipos de operaciones permitidos.
El compilador incrusta la informacin de tipos en el archivo ejecutable en forma de
metadatos. Common Language Runtime (CLR) utiliza dichos metadatos en tiempo de ejecucin
para reforzar la garanta de la seguridad de tipos cuando asigna y reclama memoria.

Tipos integrados

C# proporciona un conjunto estndar de tipos numricos integrados para representar enteros,
valores de punto flotante, expresiones Boolean, caracteres de texto, valores decimales y otros
tipos de datos. Tambin hay tipos object y string integrados. Dichos tipos estn disponibles
para que los utilice en cualquier programa de C#.

Tipos personalizados

Las construcciones struct, class, interface y enum se utilizan para crear sus propios tipos
personalizados. La biblioteca de clases de .NET Framework en s es una coleccin de tipos
personalizados proporcionada por Microsoft que puede utilizar en sus propias aplicaciones. De
forma predeterminada, los tipos usados con mayor frecuencia en la biblioteca de clases estn
disponibles en cualquier programa de C#. Otros solo estn disponibles cuando se agrega
explcitamente una referencia del proyecto al ensamblado en el que se definen. Una vez que el
compilador incluye una referencia al ensamblado, puede declarar variables (y constantes) de los
tipos declarados en dicho ensamblado en el cdigo fuente

Sistema de tipos comunes

Es importante entender dos puntos fundamentales sobre el sistema de tipos en .NET
Framework:
ste admite el principio de herencia. Los tipos pueden derivarse de otros
tipos denominados tipos base. El tipo derivado hereda (con algunas
restricciones) los mtodos, las propiedades y otros miembros del tipo
base. A su vez, el tipo base puede derivarse de algn otro tipo; en este
caso, el tipo derivado hereda los miembros de ambos tipos base en su
jerarqua de herencia. Todos los tipos, incluidos los tipos numricos
integrados como System.Int32 (palabra clave de C#: int), se derivan en
ltima instancia de un nico tipo base, que es System.Object (palabra
clave de C#: object). Esta jerarqua de tipos unificados se
denomina Sistema de tipos comunes (CTS).
Cada uno de los tipos de CTS se define como un tipo de valor o un tipo de
referencia. Esto incluye todos los tipos personalizados de la biblioteca de clases .NET
Framework y tambin los tipos propios definidos por el usuario. Los tipos que define
mediante la palabra clave struct son tipos de valor; todos los tipos numricos
integrados son structs. Los tipos que define mediante la palabra clave class son tipos de
referencia. Los tipos de referencia y los tipos de valor tienen distintas reglas de tiempo
de compilacin y un comportamiento diferente en tiempo de ejecucin.
En la ilustracin siguiente se muestra la relacin entre los tipos de valor y los tipos de referencia
en CTS.
Tipos de valor y tipos de referencia en CTS


Tipos de valor
Los tipos de valor se derivan de System.ValueType, que a su vez se deriva de System.Object. Los
tipos que se derivan de System.ValueType tienen un comportamiento especial en CLR. Las
variables de tipo de valor contienen directamente sus valores, lo que significa que la memoria se
asigna insertndola en cualquier contexto en el que se declare la variable. En las variables de
tipo de valor no se produce una asignacin de memoria independiente en el montn ni una
sobrecarga de recoleccin de elementos no utilizados.
Hay dos categoras de tipos de valor: struct y enum.
Los tipos numricos integrados son structs con propiedades y mtodos a los que puede tener
acceso:

// Static method on type Byte.
byte b = Byte.MaxValue;
Sin embargo, la declaracin y asignacin de valores a dichos tipos se realizan como si fueran
tipos simples no agregados:
byte num = 0xA;
int i = 5;
char c = 'Z';
Los tipos de valor son sealed, lo que significa, por ejemplo, que no puede derivar un tipo
de System.Int32 y que no puede definir un struct para que herede de cualquier clase o struct
definidos por el usuario, ya que un struct solo puede heredar de System.ValueType. Sin
embargo, un struct puede implementar una o varias interfaces. Puede convertir un tipo de struct
en un tipo de interfaz; esto hace que una operacin de conversin boxing encapsule el struct en
un objeto de tipo de referencia del montn administrado. Las operaciones de conversin boxing
tienen lugar al pasar un tipo de valor a un mtodo que toma un elemento System.Object como
parmetro de entrada.
La palabra clave struct se usa para crear sus propios tipos de valor
personalizados. Normalmente, un struct se utiliza como contenedor de un pequeo conjunto
de variables relacionadas.
La otra categora de tipos de valor es enum. Una enumeracin define un conjunto de constantes
integrales con nombre. Por ejemplo, la enumeracin System.IO.FileMode de la biblioteca de
clases .NET Framework contiene un conjunto de enteros constantes con nombre que especifican
cmo debe abrirse un archivo.
La constante System.IO.FileMode.Create tiene un valor 2. Sin embargo, el nombre es mucho
ms significativo para los humanos que leen el cdigo fuente y, por esa razn, es mejor utilizar
enumeraciones en lugar de nmeros de literal constante
Todas las enumeraciones heredan de System.Enum, que a su vez hereda
de System.ValueType. Todas las reglas aplicables a los structs tambin se aplican a las
enumeraciones.

Tipos de referencia
Un tipo que se define como clase, delegado, matriz o interfaz es un tipo de referencia. Al
declarar una variable de un tipo de referencia en tiempo de ejecucin, la variable contiene el
valor null hasta que se crea explcitamente una instancia del objeto mediante el operador new o
se le asigna un objeto creado en otro lugar mediante new
Una interfaz debe inicializarse junto con un objeto de clase que la
implementa. Si MyClass implementa IMyInterface, cree una instancia de IMyInterface como
se muestra en el ejemplo siguiente:
IMyInterface iface = new MyClass();
Cuando se crea el objeto, se asigna la memoria en el montn administrado y la variable solo
contiene una referencia a la ubicacin del objeto. Los tipos del montn administrado producen
sobrecarga cuando se asignan y cuando los reclama la funcionalidad de administracin de
memoria automtica de CLR, conocida como recoleccin de elementos no utilizados. Sin
embargo, la recoleccin de elementos no utilizados tambin est muy optimizada y no crea
problemas de rendimiento en la mayora de los casos. Para obtener ms informacin acerca de
la recoleccin de elementos no utilizados, vea Administracin de memoria automtica.
Todas las matrices son tipos de referencia, incluso si sus elementos son tipos de valor. Las
matrices se derivan implcitamente de la clase System.Array, pero se declaran y utilizan con la
sintaxis simplificada proporcionada por C#, como se muestra en el ejemplo siguiente:

// Declare and initialize an array of integers.
int[] nums = { 1, 2, 3, 4, 5 };

// Access an instance property of System.Array.
int len = nums.Length;
Tipos de valores literales

En C#, los valores literales reciben un tipo del compilador. Para especificar el tipo de un literal
numrico, anexe una letra al final del nmero. Por ejemplo, para especificar que el valor 4.56
debe tratarse como tipo flotante, anexe una "f" o "F" despus del nmero: 4.56f. Si no se anexa
ninguna letra, el compilador inferir un tipo para el literal.Para obtener ms informacin sobre
los tipos que pueden especificarse con sufijos de letras

Tipos genricos

Un tipo se puede declarar con uno o varios parmetros de tipo que actan como marcador de
posicin del tipo real (el tipo concreto) que proporcionar el cdigo cliente al crear una instancia
del tipo. Estos tipos se denominan tipos genricos. Por ejemplo, el tipo de .NET
Framework System.Collections.Generic.List<T> tiene un parmetro de tipo al que, por
convencin, se le asigna el nombre T. Cuando se crea una instancia del tipo, se especifica el tipo
de los objetos que incluir la lista

Tipos implcitos, tipos annimos y tipos que aceptan valores NULL

Como ya se ha mencionado anteriormente, puede indicar el tipo implcito de una variable local
(pero no de los miembros de clase) mediante la palabra clave var. La variable sigue recibiendo
un tipo en tiempo de compilacin, pero el tipo lo proporciona el compilador
En algunos casos, es conveniente crear un tipo con nombre para conjuntos sencillos de valores
relacionados que no estn destinados a almacenarse o pasarse fuera de los lmites del
mtodo. Para este fin, puede crear tipos annimos.
Los tipos de valor normales no pueden tener el valor null. Sin embargo, puede crear tipos de
valor que acepten valores NULL si anexa ? despus del tipo. Por ejemplo, int?es un tipo int que
tambin puede tener el valor null. En CTS, los tipos que aceptan valores NULL son instancias del
tipo de struct genrico System.Nullable<T>. Dichos tipos resultan especialmente tiles al pasar
datos desde y hacia bases de datos en las que los valores numricos pueden ser null.
OPERADORES
C# proporciona un amplio conjunto de operadores, que son smbolos que especifican las
operaciones que se deben realizar en una expresin. Operaciones con tipos enteros
como ==, !=, <, >, <=, >=, binary +, binary -, ^, &, | , ~, ++, -- y sizeof() son generalmente
permitidas en enumeraciones. Adems, el usuario puede sobrecargar muchos de los
operadores, es decir, cambiar su significado al aplicarlos a un tipo definido por el usuario.
Categoras Operadores
Primario x.y
f(x)
a[x]
x++
x--
new
typeof
checked
unchecked
default(T)
delegate
sizeof
->
Unario +x
-x
!x
~x
++x
--x
(T)x
Await
&x
*x
Multiplicativo x * y
x / y
x % y
Sumatorio x + y
x y
Shift x << y
x >> y
Comprobacin de tipos y
relacionales
x < y
x > y
x <= y
x >= y
is
as
Igualdad x == y
x != y
AND lgico x & y
XOR lgico x ^ y

Desbordamiento aritmtico

Los operadores aritmticos (+, -, *, /) pueden producir resultados fuera del intervalo de valores
posibles para el tipo numrico implicado. Aunque para encontrar informacin detallada, debe
consultar la seccin acerca del operador especfico; en general, podemos decir:
El desbordamiento aritmtico de enteros produce una excepcin de desbordamiento
(OverflowException) o bien descarta los bits ms significativos del resultado. La divisin
de enteros por cero siempre produce una excepcin DivideByZeroException.
El desbordamiento aritmtico o la divisin por cero en punto flotante no producen una
excepcin, ya que los tipos de punto flotante se basan en el estndar IEEE 754, que
proporciona una representacin para los valores infinito y NaN (Not a Number, no es un
nmero).
El desbordamiento aritmtico de valores de tipo decimal siempre produce una
excepcin OverflowException. La divisin de decimales por cero siempre produce una
excepcin DivideByZeroException.

PALABRAS RESERVADAS
Todo lenguaje estable un conjunto de palabras reservadas que debern ser tomadas como prohibidas
para la declaracin de cualquier tipo de dato definido por el programador. Aqu la lista de palabras
reservadas en C#.

OR lgico x | y
AND condicional x && y
OR condicional x || y
Uso combinado de Null x ?? y
Condicional ?:
Expresin de asignacin y lambda x = y
x += y
x -= y
x *= y
x /= y
x %= y
x &= y
x |= y
x ^= y
x <<= y
x >>= y
=>
abstract enum long stackalloc
as event namespace static
base explicit new string
bool extern null struct
break false object switch
byte finally operator This
case Fixed out throw
catch float override True
char for params Try
checked foreach private typeof
class goto protected Uint
const if public ulong
continue implicit readonly unchecked
decimal in ref unsafe
default int return ushort
delegate interface sbyte using
do internal sealed virtual
double is short Void
else lock sizeof while


BIBLIOGRAFIA
http://msdn.microsoft.com/es-es/library/ms173104.aspx
http://msdn.microsoft.com/es-es/library/6a71f45d.aspx
http://www.programacionfacil.com/csharp_net/palabras_reservadas

Anda mungkin juga menyukai