Domitienda. Hosting ASP .NET 3.5 / SQL SERVER 2005
  buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Office
 • Reporting Services
 • Seguridad
 • SEO
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Noticias
 • Articulos
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?

Tutorial C#

Tipos de datos básicos

 

Los tipos de datos básicos son ciertos tipos de datos tan comúnmente utilizados en la escritura de aplicaciones que en C# se ha incluido una sintaxis especial para tratarlos. Por ejemplo, para representar números 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 más, dado lo frecuente que es el uso de este tipo también se ha predefinido en C# el alias int para el mismo, por lo que la definición de variable anterior queda así de compacta:

 

            int a = 2;

 

System.Int32 no es el único tipo de dato básico incluido en C#. En el espacio de nombres System se han incluido todos estos:

 

Tipo

Descripción

Bits

Rango de valores

Alias

 SByte

 Bytes con signo

 8

 -128 – 127

 sbyte

 Byte

 Bytes sin signo

 8

 0 – 255

 byte

 Int16

 Enteros cortos con signo

 16

 [-32.768, 32.767]

 short

 UInt16

 Enteros cortos sin signo

 16

 [0, 65.535]

 ushort

 Int32

 Enteros normales

 32

 [-2.147.483.648, 2.147.483.647]

 int

 UInt32

 Enteros normales sin signo

 32

 [0, 4.294.967.295]

 uint

 Int64

 Enteros largos

 64

 [-9.223.372.036.854.775.808, 

    9.223.372.036.854.775.807]

 long

 UInt64

 Enteros largos sin signo

 64

 [0-18.446.744.073.709.551.615]

 ulong

 Single

 Reales con 7 dígitos de precisión

 32

 [1,5×10-45 - 3,4×1038]

 float

 Double

 Reales de 15-16 dígitos de precisión

 64

 [5,0×10-324 - 1,7×10308]

 double

 Decimal

 Reales de 28-29 dígitos de precisión

 128

 [1,0×10-28 - 7,9×1028]

 decimal

 Boolean

 Valores lógicos

 32

 true, false

 bool

 Char

 Caracteres Unicode

 16

 [‘\u0000’, ‘\uFFFF’]

 char

 String

 Cadenas de caracteres

Variable

 El permitido por la memoria

 string

 Object

 Cualquier objeto

Variable

 Cualquier objeto

 object

Tabla 1: Tipos de datos básicos

Pese a su sintaxis especial, en C# los tipos básicos 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 método que espere un System.Object, lo que es muy útil para el diseño de rutinas genéricas que admitan parámetros de cualquier tipo y es una ventaja importante de C# frente a lenguajes similares como Java donde los tipos básicos no son considerados objetos.

 

El valor que por defecto se da a los campos de tipos básicos consiste en poner a cero todo el área de memoria que ocupen. Esto se traduce en que los campos de tipos básicos numéricos 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 cuáles son los tipos básicos, es el momento de comentar cuáles son los sufijos que admiten los literales numéricos para indicar al compilador cuál es el tipo que se ha de considerar que tiene. Por ejemplo, si tenemos en una clase los métodos:

 

            public static void F(int x)

            {...}

            public static void F(long x)

            {...}

 

Ante una llamada como F(100), ¿a cuál de los métodos se llamara? Pues bien, en principio se considera que el tipo de un literal entero es el correspondiente al primero de estos tipos básicos que permitan almacenarlo: int, uint, long, ulong, por lo que en el caso anterior se llamaría al primer F() Para llamar al otro podría añadirse el sufijo L al literal  y hacer la llamada con F(100L) En la Tabla 2 se resumen los posibles sufijos válidos:

 

Sufijo
Tipo del literal entero

ninguno

Primero de: int, uint, long, ulong

L ó l[1]

Primero de: long, ulong

U ó u

Primero de: int, uint

UL, Ul, uL, ul, LU, Lu, lU ó lu

ulong  

Tabla 2: Sufijos de literales enteros

Por su parte, en la Tabla 3 se indican los sufijos que admiten los literales reales son:

 

Sufijo
Tipo del literal real

F ó f

float

ninguno, D ó d

double

M ó m

decimal

Tabla 3: Sufijos de literales reales

 



[1] No se recomiendad usar el sufijo l, pues se parece mucho al número uno. De hecho, el compilador produce un mensaje de aviso si se usa y puede que en versiones futuras genere un error.

Principal