C# (pronunciado "C Sharp") es un lenguaje de programación moderno, orientado a objetos y de propósito general, desarrollado por Microsoft. Ha sido estandarizado por organizaciones como ECMA e ISO, y forma parte integral del framework .NET. Diseñado específicamente para la Infraestructura de Lenguaje Común (CLI), C# permite ejecutar código en diversas plataformas y arquitecturas.
La popularidad de C# se debe a varias característicass clave:
- Lenguaje moderno y de uso general.
- Basado en los principios de la programación orientada a objetos.
- Enfoque en componentes reutilizables.
- Curva de aprendizaje accesible.
- Estructurado y eficiente para el desarrollo de software.
- Compilable en múltiples entornos computacionales.
- Integrado con el ecosistema .NET.
Con C#, se pueden desarrollar aplicaciones robustas y seguras, tales como:
- Aplicaciones de escritorio.
- Aplicaciones web.
- Sistemas distribuidos.
- Servicios web.
- Aplicaciones de bases de datos.
Proceso de Compilación
C# es un lenguaje compilado, y su compilación implica varias etapas críticas:
- Análisis sintáctico: El código fuente se convierte en un árbol sintáctico, verificando la conformidad con la gramática del lenguaje.
- Análisis semántico: Se valida la corrección lógica, como tipos de datos, ámbitos y llamadas a funciones.
- Optimización de código: Se aplican transformaciones para mejorar el rendimiento, como la eliminación de código muerto o la expansión de funciones.
- Generación de código: El código intermedio optimizado se transforma en código objeto (generalmente código máquina) y se almacena en un archivo ejecutable.
Configuración del Entorno con Visual Studio
Para comenzar a desarrollar en C#, se recomienda instalar Visual Studio, el entorno de desarrollo integrado (IDE) oficial de Microsoft. Tras la instalación, se puede crear un proyecto nuevo seleccionando la plantilla "Aplicación de consola de C# (.NET Framework)" o variantes modernas como .NET Core.
Visual Studio organiza el trabajo en solucoines y proyectos:
- Una solución actúa como contenedor para uno o más proyectos relacionados.
- Los proyectos dentro de una solución se compilan y administran de forma conjunta.
Estructura Básica del Proyecto y Comentarios
Los comentarios son anotaciones en el código que no afectan la ejecución. En C#, se usan de varias formas:
- Comentario de una línea:
// Texto descriptivo. - Comentario multilínea:
/* Bloque de texto */. - Comentario XML para documentación:
///antes de métodos o clases. - Regiones para organizar código:
#regiony#endregion.
Atajos útiles en Visual Studio incluyen combinaciones como Ctrl+Z para deshacer, Ctrl+C para copiar, F5 para depurar, y Shift+Enter para insertar líneas nuevas.
Identificadores y Palabras Clave
Los identificadores son nombres para clases, variables y funcionees. Deben seguir reglas específicas:
- Pueden contener letras, dígitos y guiones bajos, pero deben comenzar con una letra o guión bajo.
- No pueden contener espacios ni caracteres especiales, y no deben coincidir con palabras clave a menos que usen el prefijo
@. - Son sensibles a mayúsculas y minúsculas.
Las palabras clave son términos reservados con significados predefinidos, como class, int o void.
Variables, Constantes y Tipos de Datos
Las variables almacenan datos que pueden cambiar, mientras que las constantes mantienen valores fijos. C# ofrece una variedad de tipos de datos:
Tipos de Valor
Estos tipos contienen directamente sus datos y se derivan de System.ValueType.
Tipo numérico
- Enteros con signo:
sbyte temperatura = -10;(rango aproximado -128 a 127).int poblacion = 1500000;short temperaturaPromedio = -5;long poblacionMundial = 7900000000L;(sufijo L para long).
- Enteros sin signo:
byte intensidad = 255;(rango 0 a 255).ushort puerto = 8080;ulong distancia = 18446744073709551615UL;(sufijo UL).uint intentos = 4294967295U;(sufijo U).
- Flotantes:
float piAprox = 3.14f;(sufijo f para precisión simple).double piPreciso = 3.14159265358979;
Tipo booleano
Representa valores verdadero/falso.
bool esActivo = true;bool tieneError = false;
Tipo carácter
Almacena un solo carácter Unicode.
char inicial = 'A';
Tipo enumeración
Define un conjunto de constantes con nombre.
enum Estaciones { Primavera, Verano, Otoño, Invierno };
Estaciones actual = Estaciones.Verano;
Tipo estructura
Agrupa datos relacionados en un solo tipo.
struct Coordenada {
public double Latitud;
public double Longitud;
}
Coordenada ubicacion = new Coordenada { Latitud = 40.7128, Longitud = -74.0060 };
Tipos de Referencia
Estos tipos almacenan referencias a ubicaciones de memoria en lugar de datos directos. Incluyen:
Tipo objeto
Es la clase base para todos los tipos en C# y puede contener cualquier dato.
object datoGenerico = 255;datoGenerico = "Ahora es una cadena";
Tipo cadena
Representa secuencias de caracteres inmutables.
string saludo = "Hola, C#!";string multiLinea = @"Esto es unacadena con ""comillas"".";
Tipo dinámico
Permite la resolución de tipos en tiempo de ejecución, ofreciendo flexibilidad pero con menos seguridad en tiempo de compilación.
dynamic valor = "Texto dinámico";
Console.WriteLine(valor); // Salida: Texto dinámico
valor = 100;
Console.WriteLine(valor); // Salida: 100
valor = new { Nombre = "Ejemplo", Id = 1 };
Console.WriteLine($"{valor.Nombre} - {valor.Id}"); // Salida: Ejemplo - 1