// ===++=== // // OrtizOL // // ===--=== /*============================================================ // // Clase: DiasSemana.cs // // Propósito: Demuestra el uso de enumeraciones con // combinaciones. // ============================================================*/ using System; namespace Articulos.Cap03 { internal enum Dias { /** * A cada constante se le asigna un valor binario. * Este valor se genera a partir de realizar un * desplazamiento a la izquierda. De uno por cada día. **/ Ninguno = 0, Domingo = 1, Lunes = 1 << 1, // Desplazamiento-izquierda 1 bit Martes = 1 << 2, // Desplazamiento-izquierda 2 bits Miercoles = 1 << 3, // Desplazamiento-izquierda 3 bits Jueves = 1 << 4, // Desplazamiento-izquierda 4 bits Viernes = 1 << 5, // Desplazamiento-izquierda 5 bits Sabado = 1 << 6, FinDeSemana = Viernes | Sabado | Domingo, Laborales = Lunes | Martes | Miercoles | Jueves | Viernes } /// /// Representa un evento programable /// internal class Evento { /// /// Nombre del evento a programar. /// public string NombreEvento { get; set; } /// /// Fecha en la que se realizará el evento. /// public DateTime HoraEvento { get; set; } /// /// Días en los que se repite el evento. /// public Dias RepeticionEvento { get; set; } } /// /// Clase de prueba de la enumeración `Dias` y la clase `Evento`. /// internal class PruebaDiasSemana { public static void Main() { // Crea un evento: Evento evento = new Evento(); evento.NombreEvento = "Escribir acerca de enumeraciones en C#."; evento.HoraEvento = DateTime.Parse("Thursday 22 May 2014 13:17:19"); // Asignación de la repetición de los eventos: evento.RepeticionEvento = Dias.Lunes | Dias.Miercoles | Dias.Viernes; // Muestra en la salida estándar los detalles del evento: Console.WriteLine("Resumen del evento:"); Console.WriteLine("\tNombre evento: {0}", evento.NombreEvento); Console.WriteLine("\tFecha y hora evento: {0}", evento.HoraEvento); Console.WriteLine("\tDía(s) evento: {0}", evento.RepeticionEvento.ToString("F")); } } }