using System;
namespace Articulos.Cap04
{
public class Palabra
{
public string Texto
{
set;
get;
}
///<summary>
/// Concatena el texto de dos palabras y retorna una cadena
/// de caracteres.
///</summary>
public static string operator +(Palabra p1, Palabra p2)
{
return String.Format("{0} {1}", p1.Texto, p2.Texto);
}
///<summary>
/// Concatena el texto de una palabra con un número entero
/// y retorna un objeto Palabra como una instancia nueva.
///</summary>
public static Palabra operator +(Palabra p, int i)
{
return new Palabra { Texto = p.Texto + i.ToString()};
}
///<summary>
/// Devuelve la representación en cadena de caracteres del campo Texto
/// de la instancia actual.
///</summary>
public override string ToString()
{
return Texto;
}
}
public class ClientePalabra
{
public static void Main()
{
// Creación de dos instancias de Palabra
Palabra palabra1 = new Palabra() { Texto = "Hola" };
Palabra palabra2 = new Palabra() { Texto = "Mundo" };
// Impresión de valores en la salida estándar.
Console.WriteLine("\npalabra1: {0}", palabra1);
Console.WriteLine("palabra2: {0}", palabra2);
Console.WriteLine("\nConcatenadas: {0}", palabra1 + palabra2);
Console.WriteLine("Concatadenas con entero: {0}", palabra1 + 13);
Console.WriteLine();
}
}
}
dXNpbmcgU3lzdGVtOwogCm5hbWVzcGFjZSBBcnRpY3Vsb3MuQ2FwMDQKewogICAgcHVibGljIGNsYXNzIFBhbGFicmEKICAgIHsKICAgICAgICBwdWJsaWMgc3RyaW5nIFRleHRvCiAgICAgICAgewogICAgICAgICAgICBzZXQ7CiAgICAgICAgICAgIGdldDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8vPHN1bW1hcnk+CiAgICAgICAgLy8vIENvbmNhdGVuYSBlbCB0ZXh0byBkZSBkb3MgcGFsYWJyYXMgeSByZXRvcm5hIHVuYSBjYWRlbmEgCiAgICAgICAgLy8vIGRlIGNhcmFjdGVyZXMuCiAgICAgICAgLy8vPC9zdW1tYXJ5PgogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIG9wZXJhdG9yICsoUGFsYWJyYSBwMSwgUGFsYWJyYSBwMikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBTdHJpbmcuRm9ybWF0KCJ7MH0gezF9IiwgcDEuVGV4dG8sIHAyLlRleHRvKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8vPHN1bW1hcnk+CiAgICAgICAgLy8vIENvbmNhdGVuYSBlbCB0ZXh0byBkZSB1bmEgcGFsYWJyYSBjb24gdW4gbsO6bWVybyBlbnRlcm8gCiAgICAgICAgLy8vIHkgcmV0b3JuYSB1biBvYmpldG8gUGFsYWJyYSBjb21vIHVuYSBpbnN0YW5jaWEgbnVldmEuCiAgICAgICAgLy8vPC9zdW1tYXJ5PgogICAgICAgIHB1YmxpYyBzdGF0aWMgUGFsYWJyYSBvcGVyYXRvciArKFBhbGFicmEgcCwgaW50IGkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbmV3IFBhbGFicmEgeyBUZXh0byA9IHAuVGV4dG8gKyBpLlRvU3RyaW5nKCl9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLy88c3VtbWFyeT4KICAgICAgICAvLy8gRGV2dWVsdmUgbGEgcmVwcmVzZW50YWNpw7NuIGVuIGNhZGVuYSBkZSBjYXJhY3RlcmVzIGRlbCBjYW1wbyBUZXh0byAKICAgICAgICAvLy8gZGUgbGEgaW5zdGFuY2lhIGFjdHVhbC4KICAgICAgICAvLy88L3N1bW1hcnk+CiAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGV4dG87CiAgICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgY2xhc3MgQ2xpZW50ZVBhbGFicmEKICAgIHsKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgICAgICAgewogICAgICAgICAgICAvLyBDcmVhY2nDs24gZGUgZG9zIGluc3RhbmNpYXMgZGUgUGFsYWJyYQogICAgICAgICAgICBQYWxhYnJhIHBhbGFicmExID0gbmV3IFBhbGFicmEoKSB7IFRleHRvID0gIkhvbGEiIH07CiAgICAgICAgICAgIFBhbGFicmEgcGFsYWJyYTIgPSBuZXcgUGFsYWJyYSgpIHsgVGV4dG8gPSAiTXVuZG8iIH07CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJbXByZXNpw7NuIGRlIHZhbG9yZXMgZW4gbGEgc2FsaWRhIGVzdMOhbmRhci4KICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlxucGFsYWJyYTE6IHswfSIsIHBhbGFicmExKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInBhbGFicmEyOiB7MH0iLCBwYWxhYnJhMik7CiAgICAgICAgICAgIAogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiXG5Db25jYXRlbmFkYXM6IHswfSIsIHBhbGFicmExICsgcGFsYWJyYTIpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQ29uY2F0YWRlbmFzIGNvbiBlbnRlcm86IHswfSIsIHBhbGFicmExICsgMTMpOwogICAgICAgICAgICAKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoKTsKICAgICAgICB9CiAgICB9Cn0=