Skip to content

Variables y Tipos de Variables en C#

En este articulos aprenderas todo sobre que es una variable y como son se usan las variables en C#, tambien los tipos de variables y como se utilizan cada uno en este lenguaje de programación. En caso de que te gusten mas los videos aqui comparto algunos donde explico el siguiente contenido de forma precesisa y resumida:

Sin mas preambulos comencemos…

¿Qué es una variable?

Es un símbolo que representa un lugar de almacenamiento que puede tener diferentes valores durante el tiempo.

Normalmente quizás hayas escuchado variables ya que son muy utilizados al realizar cálculos matemáticos y lógicos, y como en programación como C# utilizamos bastante estas operaciones aquí también debes conocer este concepto. 

Para que estes un poco mas claro aqui te muestro un ejemplo en la siguiente imagen:

Supongamos que la letra X es el símbolo que representa nuestra variable y X tiene un valor 15.  Esto quiere decir que ahora X ahora mismo está almacenando un valor de 15 y pero a través del tiempo este valor puede ser cambiado. 

Por ejemplo, yo podría decir que ahora X es igual a 20, y mas adelante también puedo cambiar asignarle otro valor.

Lo importante en este concepto es que tomes en cuenta el que las variables no tienen valores constantes sino que pueden variar, (valga la renuncia durante el tiempo).

Sintaxis Para Declarar Variables en C#

La sintaxis para Declarar las Variables  es como se muestra en las siguiente imagen:

Primero colocamos el tipo de datos lo cual estaremos hablando más adelante en este mismo vídeo sobre que son los tipos de datos. 

Luego sigue el nombre de la variable. 

Y por último un valor inicial que tiene la variable, el cual es opcional… en caso de no colocar un valor inicial, el compilador le asigna un valor por defecto dependiendo del tipo de datos con el que se declara la variable.

Tipos de Variables en C#

Bueno ahora que sabes cómo declarar una variable debes saber que existen tres tipos de Variables en C# que son:

  • Variables Locales
  • Variables de Instancia
  • Variables de Clase o Estáticas

Paso a explicarte cada una de ellas….

Variables Locales

Son las variables que son declaradas dentro de métodos y solo pueden ser utilizada dentro de los mismos.

En el siguiente bloque de código vemos como tenemos un método llamado imprimir. 

Ya luego estaré mostrándote en otro articulo sobre como funcionan los métodos, pero lo que necesito que te fijes aquí es que declaramos una variable llamada variableLocal la cual le asignamos un valor 100  y en la línea número 3 imprimimos su valor utilizando la función Console.WriteLine y le pasamos entre parentesis variableLocal; 

Lo que simplemente hace esto es imprimir en consola el valor de la variableLocal…

NOTA: Si te fijas la variable que declaramos dentro del método  solo puede ser utilizada dentro del mismo,  este quiere decir que si intentamos utilizar la misma variable fuera del método,  como vemos en la línea 6 de esta imagen te presentara un error de compilación indicando que la variable no existe.  

Variables de instancia

Las variables de instancia, son aquellas que son declaradas dentro de una clase y son utilizadas para definir los atributos que puede tener un objecto.

Estaremos hablando de las clases en otro articulo, pero para adelantarte un poco, las clases son como plantillas en la cuales se definen las funciones y atributos que puede tener un objeto.  

En el siguiente ejemplo definimos una clase llamada Cliente y le declaramos varias variables de instancia que representan los datos que puede tener un cliente. 

Importante que tomes en cuenta que las  variables que declaradas dentro de una clase pueden ser utilizadas por los métodos de la misma clase.

Como vemos en la siguiente imagen a partir de la línea 7 donde el método llamado imprimirNombre imprime en consola el valor de la variable Nombre que esta definida previamente como propiedad de la clase. 

Variables de Clase o Variables Estáticas

Son conocidas como variables estáticas o variables de tipo, pueden ser accedidas a través de la clase o sus instancias.

En C# las variables estáticas son declaradas como las variables de instancias pero agregándole simplemente la palabra clave static antes del tipo de datos.

Para asignar un valor o bien obtener el valor de una variable estática podemos hacerlo atrevés de la clase o bien de una instancia de la clase. 

En el siguiente ejemplo vemos como en la línea 7 asignamos el valor 1 y posteriormente en la línea 8 lo imprimimos en consola. 

Tambien, fijate que la sintaxis para acceder a una variable estatica  es el NOMBRE DE LA CLASE, Punto y luego EL NOMBRE DE LA VARIABLE estática. 

Tipos de Datos en Lenguaje C#

El tipo de datos en C# es la propiedad de un valor que define a qué dominio pertenece, es decir que posibles valores puede tomar y qué operaciones se pueden realizar.

C# es un lenguaje type-safe lo que significa que en tiempo de ejecución verifica que el valor de un tipo de datos solo pueda interactuar siguiendo las características y protocolos de dicho tipo, permitiendo que pueda mantener un consistencia interna.

Bueno pero para decírtelo de una forma un poco mas bonita y mas clara, es que por ejemplo una variable numérica de tipo entero no se puede manipular, ni interactuar con ella como si fuera una cadena de caracteres(o mejor dicho texto).

Además también el lenguaje C# static typing, es decir durante la compilación el compilador verifica que un tipo de datos solo pueda ser instanciando con un valor dentro de sus características.

Es decir, antes de correr la aplicación mientras se compila, el compilador verifica que las variables se utilicen de forma correcta según el tipo de datos con el que fueron declarados. 

Categoría de Tipo de Datos en C#

Los tipos de datos en C# se pueden clasificar dentro de las siguientes categorías:

  • Tipos de Datos de Valor
  • Tipos de Datos de Referencias
  • Tipos Genéricos
  • Tipos Punteros

En este articulo estaremos abordando los primeros dos tipos de datos de valor y referencia que son los mas utilizados, luego posiblemente haré otro video hablando sobre tipos genéricos y punteros.

La diferencia entre los tipos de datos de valor y de referencia es la manera en que se manejan en la memoria del computador mientras sé esta ejecutando la aplicación.

Vamos a verlo un poco mas en detalle los tipos de datos utilizados en C#

Tipos de Datos de Valor

Son aquellos tipos que almacenan directamente en memoria el valor con el que se instancia una variable. 

Esta categoría de tipos de datos de valor incluye mayormente a los tipos que son predefinidos y soportados por el compilador en C#, especialmente los números, caracteres y booleanos, incluyendo además los tipos personalizados struct y enum que veremos en otro video de creando tipos de datos personalizados.

Cuando una variable es declarada con un tipo de datos de valor o también conocido como tipo de datos simple, esta almacenan directamente el valor con el que se le asigna a dicha variable en memoria. 

Por ejemplo, supongamos que declaro una variable tipo numérico entero llamada valor1 y le asigno el valor de 28.

int valor1 = 28;

El compilador interpreta esta línea como de la siguiente manera como se muestra en la imagen:

Imagen que presenta como se ven las variables de tipo Valor en memoria

Donde lo que quiere decir es que la variable valor1,  apunta directamente a un valor almacenado en memoria.

Otra característica de los tipos de datos de valor es que al signarle una variable a otra el valor es copiado un espacio de memoria distinto, por ejemplo:

Si agregamos una línea de codigo declarando una variable llamada valor2 e igualándola a la variable valor1, el compilador copia el valor asignado a la variable valor1 y le asigna el mismo a la variable valor2 en un espacio de memoria totalmente distinto:

Imagen que presenta como se ven las variables de tipo Valor en memoria

Importante notar que lo que sucede aquí es que las variables que son de tipo de datos de valor tiene un almacenamiento diferente en memoria, por lo tanto al asignar una variable a otra, los datos son copiados y puede ser modificado el valor asignado a una variable sin que afecte a la otra.

Dicho lo anterior, si agregamos una línea de código, modificando el valor de valor2 a 30 veremos que si imprimimos en consola la variable valor1 aún tiene un de 28, aun luego de que cambio el valor de la variable valor2, ya que su almacenamiento memoria es distinto.

Y hago un poco de énfasis para que entiendas esta parte de como se comportan las variables de valor porque la forma en que se comportan las variables de tipo de referencia es un poco distinta.

Tipos de Datos de Referencia

Las variables que son de tipo de datos de referencia apuntan a un objeto en memoria que es el que contiene almacenado el valor que se le asigna, diferente de las de valor cuya variable almacenan los datos asignados directamente.

Dentro los tipos de datos de referencia en C# tenemos los siguientes:

  • class 
  • interface
  • delegate

También de manera predefinida en C# tenemos los siguiente tipos de datos de referencia:

  • object: que es el tipo base de los demás tipos.
  • string: representa una cadena de caracteres.
  • dynamic: representa tipo dinámico en tiempo de ejecución.

Por defecto las variables de tipo referencia tiene valor null, hasta que sea creada o bien se le asigne otra variable que fue instancida con el operador new, ver ejemplo siguiente:

Bueno, a ver, para traducirte esto de una manera mas simple, una variable de referencia realmente lo que almacena es una referencia hacia un objeto en memoria quien es que realmente está guardando los datos.

La siguiente imagen muestra como se maneja c# en memoria una variable declarada con un tipo de datos de referencia:

Imagen muestra como se maneja c# en memoria una variable declarada con un tipo de datos de referencia.

Al momento que creamos una variable nueva de tipos de datos de referencia en C# lo que el compilador hace es que guarda en un espacio en memoria la referencia(o podríamos llamarle una dirección) hacia otro espacio en memoria que es que guarda los datos del nuestro objeto. 

Otra característica de una variable de tipo de datos de referencia es que cuando asignamos una variable a otra del mismo tipo, ambas variables apuntan a la misma referencia en memoria. 

Por lo tanto si modificamos una propiedad de una variable, afectara a la otra. 

Asi como se muestra en este ejemplo donde en nuestra primera variable cliente1 asignamos a la propiedad Nombre igual a Yeison y luego creamos otra variable llamada cliente2 y le asignamos la variable cliente1.

Si le cambiamos el Nombre a la variable cliente2 y imprimos la variable cliente1 veremos que el valor que sale en la consola es Jose, ya que ambas apunta a la misma referencia que a su vez apunta al mismo objecto en memoria.  

donde vemos como al asignar una variable de tipo de referencia a otra ambas apuntan al mismo objeto en memoria por lo tanto al cambiar la asignación en una afecta a la otra.

Si ejemplo anterior le agregamos una línea en la cual se modifica el propiedad nombre en object2, veremos que dicha propiedad también cambien en la variable object1.

Tipos de Datos Predefinidos en C#

C# como lenguaje de programación cuenta con 16 tipos de datos predefinidos que pueden ser utilizados a su vez para crear tipos de datos personalizados.

Dentro de los tipos mas utilizados mayormente se encuentra aquellos que son de tipo numéricos, alfanuméricos y de valores lógicos.

Tipo de Datos Numéricos Enteros

Primero te hablare de los tipos de datos numéricos… 

Aquí en  la siguiente imagen se muestra una tabla los tipos de datos numéricos enteros que se encuentran predefinidos en C#.

Los tipos numéricos enteros sé agrupan a su vez en enteros con signo como (sbyte, short, int, long) que pueden tomar valores negativos y enteros sin signo (byte, ushort, uint, ulong) los cuales solo pueden tomar valores positivos apartir de cero.

Imagen de Tipos de Variables Numericos Enteros con Signo en C#
Imagen de Tipos de Variables Numericos Enteros sin Signo en C#

La principal diferencia entre estos los enteros es el rango que abarca en los valores que pueden tener asignados las variables y el espacio que ocupan en memoria. 

El alias que vemos en esta tabla ser refiere a el  keyword o una forma corta que utilizamos para declarar estos tipos en C#, esto nos ayuda a no tener que escribir el nombre largo con el que se definieron estos tipos en la librería de .NET. El valor predeterminado de estos tipos de datos es cero 0. Además admiten operadores aritméticos, de comparación, bit a bit, y de igualdad.

Tipos de Datos Alfanumericos( Char y String)

El tipo de dato char en C# se utiliza para almacenar un único carácter alfanumérico. Es ideal para situaciones donde se necesita trabajar con caracteres individuales, como en el análisis de textos o en la codificación de caracteres.

Un ejemplo clásico es la iteración sobre cada carácter de una cadena para realizar alguna operación, como la conversión a mayúsculas o la verificación de caracteres especiales.

Por otro lado, string es un tipo de dato que permite almacenar secuencias de caracteres, es decir, textos. Es uno de los tipos más utilizados, ya que permite la manipulación de palabras, oraciones o incluso textos completos.

Se utiliza en una amplia variedad de aplicaciones, desde la interfaz de usuario hasta el procesamiento de datos y la generación de informes.

Variables Booleanas

Por ultimo, las variables booleanas son un tipo de dato que solo pueden tener dos valores: true o false. En C#, se declaran usando la palabra clave bool. Son fundamentales para la toma de decisiones en el código, permitiendo ejecutar diferentes acciones según condiciones específicas.

Se utilizan comúnmente en estructuras de control como if y while, para realizar pruebas lógicas y controlar el flujo del programa.

Conclusion

Esto seria todo sobre variables en C#, en este articulo hemos abordado de manera rapida el como utilizarlas y los diferentes tipos que podemos encontrar en este lenguaje de programación.

Picture of Yeison Lapaix
Yeison Lapaix
Hola!, Soy Yeison Lapaix un desarrollador Full Stack .Net con más de 10 años de experiencia en el desarrollo de aplicaciones web con ASP.NET Core, MVC, C#, JavaScript, Oracle DB y SQL Server. Tengo buena experiencia en la creación de API web RESTful con .Net Core y aplicaciones front-end con Angular, Vue JS, jQuery, HTML5 y CSS. Trabajo competente con principios OOP y patrones de diseño, principios SOLID y experiencia con entornos de desarrollo ágiles. Me considero un desarrollador entusiasta que busca mejoras continuas para ser mejor cada día.

TABLE OF CONTENTS

Yeison Lapaix – Full Stack Developer | .NET | Angular | Systems Engineer | Technology Enthusiast