using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace Articulos.Cap04.Excepciones.Parte2
{
public sealed class TryXxxVsExcepciones
{
public static void Main()
{
// Creación del diccionario:
Dictionary<string, string> abrirCon = new Dictionary<string, string>();
// Agregación de extensiones:
abrirCon.Add (".html", "Internet Explorer");
abrirCon.Add (".cs", "Notepad++ Portable (PortableApps Launcher)");
abrirCon.Add (".mp3", "Winamp");
abrirCon.Add (".camrec", "Camtasia Studio");
abrirCon.Add (".jpg", "Pain.NET");
// Uso del patrón TryXXX:
Console.WriteLine ("\nUso del patrón TryXXX:");
string aplicacion = String.Empty;
Stopwatch cronometro = new Stopwatch();
cronometro.Start();
for (int i = 1; i <= 1000; ++i)
{
abrirCon.TryGetValue (".tif", out aplicacion);
}
cronometro.Stop();
// Muestra los resultados de las ejecuciones del método TryGetValue:
Console.WriteLine ("\tTiempo transcurrido: {0}ms", cronometro.Elapsed.TotalMilliseconds.ToString());
// Uso del modo de acceso basado en indizador ('indexer').
// Este modo genera una excepción si la aplicación a la
// extensión pasada como índice no existe:
Console.WriteLine ("\nUso del modo de acceso basado en indizador:");
cronometro.Reset();
cronometro.Start();
for (int i = 1; i <= 1000; ++i)
{
try
{
aplicacion = abrirCon[".tif"];
}
catch (KeyNotFoundException)
{
// Captura de la excepción.
}
}
cronometro.Stop();
// Muestra los resultados de las ejecuciones en excepciones:
Console.WriteLine ("\tTiempo transcurrido: {0}ms\n", cronometro.Elapsed.TotalMilliseconds.ToString());
}
}
}