Operadores y expresiones en C#
Operadores y expresiones en C#: uso de operadores aritméticos, de comparación, lógicos, de incremento/decremento, ternario y null-coalescing.
En C#, los operadores son símbolos especiales que realizan operaciones sobre variables o valores. Con estos símbolos puedes hacer cálculos matemáticos, comparar dos valores, crear condiciones lógicas o asignar rápidamente un valor a una variable. Las estructuras formadas al combinar operadores se llaman expresiones. Las expresiones son los bloques fundamentales que dirigen el flujo del programa y producen resultados.
Operador de asignación (=)
Se utiliza para asignar un valor a una variable.
int x = 5;
string mensaje = "Hola";
x = 10;
Aquí, a la variable x de tipo int se le asigna el valor 5, y a la variable mensaje de tipo string se le asigna el valor "Hola". Más tarde, a x se le asigna el valor 10.
Operadores aritméticos
En C#, los operadores aritméticos se utilizan para realizar operaciones numéricas. Estos operadores permiten realizar operaciones básicas como suma, resta, multiplicación, división y módulo (resto).
| Operador | Descripción | Ejemplo (x=10, y=3) |
Resultado |
|---|---|---|---|
+ |
Suma | x + y |
13 |
- |
Resta | x - y |
7 |
* |
Multiplicación | x * y |
30 |
/ |
División | x / y |
3 |
% |
Módulo (resto) | x % y |
1 |
Ejemplo:
int a = 15;
int b = 4;
Console.WriteLine(a + b); // 19
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 3
Operadores de comparación
En C#, los operadores de comparación se utilizan para comparar dos valores. El resultado de estas operaciones es siempre de tipo bool.
bool es un tipo lógico que solo puede tomar los valores true (verdadero) o false (falso).
| Operador | Descripción | Ejemplo (x=10, y=3) |
Resultado |
|---|---|---|---|
== |
¿Igual a? | x == y |
false |
!= |
¿Diferente de? | x != y |
true |
> |
¿Mayor que? | x > y |
true |
< |
¿Menor que? | x < y |
false |
>= |
¿Mayor o igual que? | x >= y |
true |
<= |
¿Menor o igual que? | x <= y |
false |
Ejemplo:
int a = 7;
int b = 10;
bool res1 = (a < b); // true
bool res2 = (a == b); // false
Console.WriteLine(res1); // true
Console.WriteLine(res2); // false
Operadores lógicos
Se utilizan para combinar condiciones. Estas condiciones son de tipo bool. Ejecutan las operaciones lógicas y, o y no.
| Valor 1 | Valor 2 | && (y) | || (o) |
|---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
Los operadores se utilizan así:
| Operador | Descripción | Ejemplo (a=true, b=false) |
Resultado |
|---|---|---|---|
&& |
y | a && b |
false |
|| |
o | a || b |
true |
! |
no | !a |
false |
Por ejemplo, si la variable x es menor que 5 y la variable y es mayor que 10, la condición se escribe así:
bool crit = x < 5 && y > 10;
Un ejemplo sencillo: si la edad es mayor o igual a 18 y el usuario tiene licencia de conducir, puede manejar un coche:
using System;
class Program
{
static void Main()
{
Console.Write("Ingrese su edad: ");
int edad = int.Parse(Console.ReadLine());
Console.Write("¿Tiene licencia de conducir? (Y/N): ");
string respuesta = Console.ReadLine().ToUpper();
bool licencia = (respuesta == "Y");
if (edad >= 18 && licencia)
{
Console.WriteLine("Puede conducir un coche.");
}
else
{
Console.WriteLine("No puede conducir un coche.");
}
}
}
Operadores de asignación compuesta
Combinan la asignación con la aritmética. Por ejemplo, sumar 5 a un número, restar 2 o multiplicarlo por 6.
| Operador | Descripción | Ejemplo (x=10) |
Resultado |
|---|---|---|---|
+= |
sumar | x += 5 |
15 |
-= |
restar | x -= 2 |
8 |
*= |
multiplicar | x *= 6 |
60 |
/= |
dividir | x /= 2 |
5 |
%= |
módulo | x %= 2 |
0 |
Operadores de incremento y decremento
Se utilizan para aumentar o disminuir un número en 1.
int x = 5;
x++; // 6
x--; // 5
Prefijo vs. Postfijo:
int a = 5;
Console.WriteLine(++a); // 6 (incrementar antes, luego mostrar)
Console.WriteLine(a++); // 6 (mostrar antes, luego incrementar → a=7)
Operador ternario (?:)
Es una forma corta de if-else. Selecciona una de dos opciones según la condición.
using System;
class Program
{
static void Main()
{
Console.Write("Ingrese un número: ");
int num = int.Parse(Console.ReadLine());
string resultado = (num % 2 == 0)
? "El número ingresado es par."
: "El número ingresado es impar.";
Console.WriteLine(resultado);
}
}
- El número se lee con
Console.ReadLine(). - Convertido de
stringaintconint.Parse. - El operador ternario (
?:) evalúanum % 2 == 0. - El mensaje del resultado se imprime en la consola.
Operadores de coalescencia nula (?? y ??=)
En C#, null indica que una variable no hace referencia a ningún valor. En otras palabras, la variable está definida pero no contiene ningún valor. Esto ocurre comúnmente en variables de tipo string o de clase (tipos de referencia).
A veces queremos asignar un valor predeterminado en lugar de null. Aquí es donde entran en juego los operadores de coalescencia nula:
Ejemplo 1: uso de ??
string name = null;
string result = name ?? "Sin nombre";
Console.WriteLine(result);
Ejemplo 2: uso de ??=
string name = null;
name ??= "Desconocido";
Console.WriteLine(name); // Desconocido
Ejemplo (Carrito de compras)
using System;
using System.Globalization;
class Program
{
static void Main()
{
// Cultura de entrada: reducir problemas de punto/coma
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
// 1) Lectura de datos del usuario
Console.Write("Nombre (puede dejarlo en blanco): ");
string nombre = Console.ReadLine();
nombre = string.IsNullOrWhiteSpace(nombre) ? null : nombre.Trim();
nombre ??= "Invitado"; // (??=) valor predeterminado si null
Console.Write("Ciudad (puede dejarlo en blanco): ");
string ciudad = Console.ReadLine();
ciudad = string.IsNullOrWhiteSpace(ciudad) ? null : ciudad.Trim();
string ciudadInfo = ciudad ?? "Ciudad desconocida"; // (??) valor si null
Console.Write("Total del carrito (ej. 749.90): ");
double carrito = double.Parse(Console.ReadLine());
Console.Write("¿Es usted miembro? (Y/N): ");
bool miembro = Console.ReadLine().Trim().ToUpper() == "Y";
Console.Write("Código de cupón (puede dejarlo en blanco): ");
string cupon = Console.ReadLine();
cupon = string.IsNullOrWhiteSpace(cupon) ? null : cupon.Trim().ToUpper();
Console.Write("¿Desea envío exprés? (Y/N): ");
bool express = Console.ReadLine().Trim().ToUpper() == "Y";
// 2) Reglas de negocio y operadores
// Aritmética: IVA, descuento, envío, total
const double IvaTasa = 0.20; // 20% IVA
const double MiembroDesc1 = 0.05; // 5% si miembro
const double MiembroDesc2 = 0.10; // 10% si miembro y carrito >= 500
const double CuponDesc = 0.10; // +10% si cupón "DESCUENTO10" o "CODIGO10"
const double MaxDescuento = 0.25; // Tope máximo 25%
const double EnvStandard = 19.90;
const double EnvExpress = 49.90;
const double UmbralEnvGratis = 300.0;
// Comparación + lógica: determinar porcentaje de descuento
double descTasa = miembro && carrito >= 500
? MiembroDesc2
: (miembro ? MiembroDesc1 : 0.0);
// Lógica: verificación de cupón (O)
if (cupon == "DESCUENTO10" || cupon == "CODIGO10")
descTasa += CuponDesc; // Asignación compuesta (+=)
// Aplicar tope
descTasa = Math.Min(descTasa, MaxDescuento);
// Calcular descuento e IVA
double descMonto = carrito * descTasa;
double subtotal = carrito - descMonto;
double iva = subtotal * IvaTasa;
// Envío: ¿exprés? si no, verificar envío gratis
double envio = express
? EnvExpress
: (subtotal >= UmbralEnvGratis ? 0.0 : EnvStandard);
// Total general
double total = subtotal + iva;
total += envio;
// 3) Resumen
Console.WriteLine();
Console.WriteLine("— Resumen de pago —");
Console.WriteLine($"Cliente : {nombre} ({ciudadInfo})");
Console.WriteLine($"Carrito : {carrito:0.00} EUR");
Console.WriteLine($"Descuento % : {(descTasa * 100):0}% (-{descMonto:0.00} EUR)");
Console.WriteLine($"Subtotal : {subtotal:0.00} EUR");
Console.WriteLine($"IVA (20%) : {iva:0.00} EUR");
Console.WriteLine($"Envío : {envio:0.00} EUR {(express ? "(Exprés)" : "(Estándar)")}");
Console.WriteLine($"Total general: {total:0.00} EUR");
// Ejemplo lógico adicional: nota en la factura
bool carritoAlto = total >= 1000.0;
Console.WriteLine(carritoAlto && miembro
? "Nota: Ha ganado puntos extra por su pedido de alto valor."
: "Nota: Con una membresía puede beneficiarse de descuentos adicionales.");
}
}
Con este ejemplo puede probar en su aplicación de consola una práctica combinada de los operadores anteriores.
La salida de la aplicación será como en la captura de pantalla anterior.