using System;
namespace Articulos.Cap04
{
public sealed class TiposParametrosExplicitos
{
public static void Main()
{
// Uso de delegado genérico integrado,
// Func<T, TResult>.
// El compilador hace la tarea de inferencia:
Func<int, int> cuadrado1 = x => x * x;
Console.WriteLine ("\nUso de `x => x * x`: {0}", cuadrado1(11).ToString());
// Aquí ayudamos al compilador a inferir los tipos
// de los parámetros:
Func<int, int> cuadrado2 = (int x) => x * x;
Console.WriteLine ("\nUso de `(int x) => x * x`: {0}", cuadrado1(11).ToString());
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIEFydGljdWxvcy5DYXAwNAp7CglwdWJsaWMgc2VhbGVkIGNsYXNzIFRpcG9zUGFyYW1ldHJvc0V4cGxpY2l0b3MKCXsKCQlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgkJewoJCQkvLyBVc28gZGUgZGVsZWdhZG8gZ2Vuw6lyaWNvIGludGVncmFkbywKCQkJLy8gRnVuYzxULCBUUmVzdWx0Pi4KCQkJLy8gRWwgY29tcGlsYWRvciBoYWNlIGxhIHRhcmVhIGRlIGluZmVyZW5jaWE6CgkJCUZ1bmM8aW50LCBpbnQ+IGN1YWRyYWRvMSA9IHggPT4geCAqIHg7CgkJCUNvbnNvbGUuV3JpdGVMaW5lICgiXG5Vc28gZGUgYHggPT4geCAqIHhgOiB7MH0iLCBjdWFkcmFkbzEoMTEpLlRvU3RyaW5nKCkpOwoJCQkKCQkJLy8gQXF1w60gYXl1ZGFtb3MgYWwgY29tcGlsYWRvciBhIGluZmVyaXIgbG9zIHRpcG9zCgkJCS8vIGRlIGxvcyBwYXLDoW1ldHJvczoKCQkJRnVuYzxpbnQsIGludD4gY3VhZHJhZG8yID0gKGludCB4KSA9PiB4ICogeDsKCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJcblVzbyBkZSBgKGludCB4KSA9PiB4ICogeGA6IHswfSIsIGN1YWRyYWRvMSgxMSkuVG9TdHJpbmcoKSk7CgkJfQoJfQp9