TOC

This article has been localized into Spanish by the community.

Tipos de datos.:

Tipos Anónimos

Hasta ahora, hemos aprendido que los objetos vienen de una clase. Una clase es declarada con un número de campos, propiedades y/o métodos y luego puedes crear una instancia de esta clase como un objeto. Sin embargo, con la introducción de los tipos anónimo, ya no tendrás que declarar una clase antes de crear un objeto. No te preocupes, las clases aún no están del todo acabadas, porque los tipos anónimos (o objetos) vienen con varias limitaciones, pero para algunas situaciones, son realmente buenas.

Un tipo anónimo se inicializa usando el operador new, en combinación con un inicializador de objetos - en ese sentido, es muy parecido a instanciar una clase, sólo que se omite el nombre de la clase. Además, como no hay una clase detrás del objeto, debes usar la palabra clave var al recuperar la referencia a tu objeto. Esto puede sonar complicado, pero el siguiente ejemplo debería demostrarte que no es nada complicado:

var user = new    
{    
Name = "John Doe",    
Age = 42  
};
Console.WriteLine(user.Name + " - " + user.Age + " years old");

Eso es - ahora tenemos un objeto con información (nombre y edad) sobre un usuario. Los tipos anónimos son excelentes para muchas situaciones, especialmente cuando sólo necesitas devolver algo rápido, con más complejidad que sólo una cadena o un número. Los tipos anónimos le permiten crear propiedades sobre la marcha, sin preocuparse de declarar una clase primero y luego alterar esta clase cuando necesites cambiarla. Pero como se ha mencionado, hay varias limitaciones que debe tener en cuenta cuando considere la posibilidad de utilizar un tipo anónimo en lugar de definir una clase:

  • A diferencia de una clase real, un tipo anónimo no puede tener campos o métodos - sólo propiedades
  • Una vez que el objeto ha sido inicializado, no puedes añadirle nuevas propiedades
  • Las propiedades son de sólo lectura - tan pronto como el objeto se ha inicializado, no se pueden cambiar sus valores

Pero dicho esto, los tipos anónimos siguen siendo extremadamente prácticos para muchas tareas. Un escenario de uso común es cuando se tiene un objeto complejo (de una clase definida) y se necesita simplificarlo, por ejemplo, porque que tengas que mantener el objeto lo más pequeño posible para enviarlo a un navegador o tal vez porque el objeto completo tiene información sensible que no se quiere exponer al consumidor. Los tipos anónimos son excelentes para esto, como se ilustra en el siguiente ejemplo:

using System;
using System.IO;

namespace AnonymousTypes
{
    class Program
    {
static void Main(string[] args)
{
    string pathOfExe = System.Reflection.Assembly.GetEntryAssembly().Location;
    FileInfo fileInfo = new FileInfo(pathOfExe);
    var simpleFileInfo = new
    {
Filename = fileInfo.Name,
FileSize = fileInfo.Length
    };
    Console.WriteLine("File name: " + simpleFileInfo.Filename + ". Size: " + simpleFileInfo.FileSize + " bytes");
}
    }
}

La primera línea simplemente nos dará el nombre del archivo que se está ejecutando actualmente, es decir, nuestra propia aplicación. Lo usamos para crear una instancia de la clase FileInfo, que luego contendrá MUCHA información sobre este archivo específico. No queremos toda esa información, así que creamos una versión simplificada de la misma con un tipo anónimo, usando la información de la instancia original de FileInfo. En la última línea, usamos esta información para obtener una salida básica.

Probablemente han notado que damos un nombre a cada una de las propiedades definidas en nuestro tipo anónimo (Filename and FileSize) - eso tiene bastante sentido, ya que queremos acceder a ellas más tarde. Sin embargo, cuando basamos nuestro objeto en información de un objeto existente, podemos dejar de lado nuestro propio nombre y dejar que el compilador utilice el nombre de la propiedad que le asignamos, así:

var simpleFileInfo = new
{
    fileInfo.Name,
    fileInfo.Length
};

Ahora, tenemos dos propiedades llamadas Name y Length, en lugar de Filename y FileSize. Una muy buena conveniencia, si no te importan los nombres o tal vez más probable: Si realmente prefieres los mismos nombres que el objeto original.

Resumen

Los tipos anónimos permiten instanciar rápidamente un objeto con una o varias propiedades. Estas propiedades son de sólo lectura, y no puedes añadir más propiedades en un momento posterior.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!