// ===++===
//
// 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
}
///<summary>
/// Representa un evento programable
///</summary>
internal class Evento
{
///<summary>
/// Nombre del evento a programar.
///</summary>
public string NombreEvento
{
get;
set;
}
///<summary>
/// Fecha en la que se realizará el evento.
///</summary>
public DateTime HoraEvento
{
get;
set;
}
///<summary>
/// Días en los que se repite el evento.
///</summary>
public Dias RepeticionEvento
{
get;
set;
}
}
///<summary>
/// Clase de prueba de la enumeración `Dias` y la clase `Evento`.
///</summary>
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"));
}
}
}