InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial C#
Introduccion a C#
Programacion con C#
Fundamentos de C#
Operadores
Instrucciones
Estrcuturas de control.
Definición de clases
Creación de objetos
Herencia y métodos virtuales
Polimorfismo
Ocultación de miembros
Miembros de tipo
Encapsulación
Espacios de nombres
Importación de espacios de nombres
Espacio de nombres distribuidos
Variables y tipos de datos
Tablas unidimensionales
Tablas multidimensionales
La clase System.Array
Cadenas de texto
Constantes
Orden de inicialización de variables
Métodos
Métodos externos
Constructores
Destructores
Propiedades
Indizadores
Redefinición de operadores
Delegados y eventos
La clase MulticastDelegate
Llamadas asíncronas
Implementación interna de los delegados
Eventos
Estructuras
Boxing y unboxing
Constructores de estructuras
Enumeraciones
Interfaces
Excepciones
Otras instrucciones
Atributos
Definición de nuevos atributos
Lectura de atributos en tiempo de ejecución
Atributos de compilación
Pseudoatributos
Código inseguro
Definición de punteros
Manipulación de punteros
Operadores relacionados con código inseguro
Fijación de variables apuntadas
Novedades de C# 2.0
Genéricos
Tipos parciales
Iteradores
Mejoras en la manipulación de delegados
Tipos anulables
Modificadores de visibilidad de bloques get y set
Clases estáticas
Referencias a espacios de nombres
Supresión temporal de avisos
Atributos condicionales
Incrustación de tablas en estructuras
Modificaciones en el compilador
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Generar archivos PDF con C#
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format

Afiliados
La Web del programador
MundoProgramacion


 

Definición de variables

     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 sólo hay que definirla indicando cual erá su nombre y cual será el tipo de datos que podrá almacenar, lo que se hace siguiendo la siguiente intaxis:


<tipoVariable> <nombreVariable>;
       

    Una variable puede ser definida dentro de una definición de clase, en cuyo caso se correspondería con el tipo de miembro que hasta ahora hemos denominado campo. También puede definirse como un variable local a un método, que es una variable definida dentro del código del método a la que sólo puede accederse desde dentro de dicho código. Otra posibilidad es definirla como parámetro de un método, que son variables que almacenan los valores de llamada al método y que, al igual que las variables locales, sólo puede ser accedidas desde código ubicado dentro del método. El siguiente ejemplo muestra como 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 parámetros de tipo string. Como se muestra en el ejemplo, si un método toma varios parámetros las definiciones de éstos se separan mediante comas (carácter ,), y si queremos definir varios campos o variables locales (no válido para parámetros) de un mismo tipo podemos incluirlos en una misma definición incluyendo en sus nombres separados por comas.

    Con la sintaxis de definición de variables anteriormente dada simplemente definimos variables pero no almacenamos ningún objeto inicial en ellas. El compilador dará un valor por defecto a los campos para los que no se indique explícitamente ningún valor según se explica en el siguiente apartado. Sin embargo, a la variables locales no les da ningún valor inicial, pero detecta cualquier intento de leerlas antes de darles valor y produce errores de compilación 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 sería así:


Persona p;
p = new Persona("José", 22, "76543876-A");

    Sin embargo, C# también proporciona una sintaxis más 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 notación:


<tipoVariable> <nombreVariable> = <valorInicial>;
         

    Así por ejemplo, la anterior asignación de valor a la variable p podría rescribirse de esta otra forma más compacta:


Persona p  = new Persona("José", 22, "76543876-A");

    La especificación de un valor inicial también combinarse con la definición de múltiples variables separadas por comas en una misma línea. Por ejemplo, las siguientes definiciones son válidas:


Persona p1 = new Persona("José", 22, "76543876-A"),
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 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 5 : 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 6 se resumen los posibles sufijos válidos:

Sufijo

Tipo del literal entero

ninguno

Primero de: int, uint, long, ulong

L ó l[9]

Primero de: long, ulong

U ó u

Primero de: int, uint

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

ulong  

 Tabla 6: Sufijos de literales enteros

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

Sufijo

Tipo del literal real

F ó f

float

ninguno, D ó d

double

M ó m

decimal

 Tabla 7: Sufijos de literales reales


Inicio | Tutorial C# Espacio de nombres distribuidosTutorial C#Tablas unidimensionales Versión para imprimir Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial C# Espacio de nombres distribuidosTutorial C#Tablas unidimensionales Versión para imprimir

Variables y tipos de datos
Autor: José Antonio González Seco
Visitas: 22444 Fecha de publicación: 09/10/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 304 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 430 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1448 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 238 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2573 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 464 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1072 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 1 21/11/2008
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008
Como mandar mensaje a Celular por Pako ... [C#] 40 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
27/10/2006 Eventos    forma parte de...Tutorial C#
21/07/2007 Insertar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
11/03/2008 Problemas en la instalación de Visual Studio 2008-Visual studio web authoring component
28/08/2006 Ubuntu en VmWare con VMware Tools
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
11/06/2008 Problemas con el diseñador Web de Visual Studio 2008
22/10/2005 Componentes del lenguaje SQL    forma parte de...Tutorial SQL
12/01/2008 SQL dinámico en Transact SQL    forma parte de...Tutorial de Transact SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]