vtortola.NET Logo
Conversion de arrays sin cast directo con C#

Conversion de arrays sin cast directo con C#

por vtortola sábado, 12 de julio de 2008

Realizar casting entre clases es siempre sencillo, el inconveniente es cuando se trata de un arrays. Por ejemplo... sabiendo que la clase Manager deriva de Employee, si tenemos un array de Manager, es fácil convertirlo en un array de Employee usando casting directo:

Employee[] employees1 = (Employee[])managers;

Pero si tenemos un array de Employee no es posible convertirlo en  un array de Manager de la misma forma que tampoco podríamos hacer un casting directo entre objetos simples. No se me ocurre razón cuerda para querer hacer tal cosa, pero otro ejemplo más cotidiano puede ser cuando intentamos mostrar el contenido de un array en una línea usando String.Join, nos daremos cuenta que tiene que ser String[]. Existen muchas situaciones donde no hay un casting directo.

Afortunadamente disponemos del método genérico Array.ConvertAll<,> y del delegado genérico Converter<,> que nos pueden ayudar a simplificar estas cosas:

// Primero definimos como se convierte una clase en la otra
Converter<Employee, String> Employee2String = delegate(Employee m) { return m.Name; };
 
// Después convertimos todos los elementos del array usando ese delgado
String[] sArray = Array.ConvertAll<Employee,String>(Employees,Employee2String);

Ó podemos hacerlo en una sola línea aprovechando la inferencia de tipos:

String[] sArray = Array.ConvertAll<Employee,String>(Employees,delegate(Employee m) { return m.Name; });

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

.NET 2.0 | C# 2.0

Related posts

Comentarios

julio 12. 2008 17:03

trackback

Trackback from Pensando en asíncrono

Conversion de arrays sin cast directo con C#

Pensando en asíncrono

julio 12. 2008 17:03

trackback

Trackback from vtortola

Conversion de arrays sin cast directo con C#

vtortola

Comments are closed

Powered by BlogEngine.NET 1.1.1.8
This theme is a variation of Mads Kristensen by Valeriano Tórtola

Valeriano Tórtola

Personal Ver perfil
E-mail Enviar correo
LinkedIn LinkedIn
Fotos Fotos
MCPD

Publicidad

Posts recientes

Disclaimer

Las opiniones mostradas aqui son mis opniones y no representan el punto de vista de mi empresa en ninguna forma.

Creative Commons License

Esta obra está bajo una licencia de Creative Commons

Locations of visitors to this page

© Copyright 2010

Sign in

Calendario

<<  julio 2010  >>
lumamijuvido
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Ver en calendario extendido