Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

348
Vistas
¿Por qué usar un tipo genérico y luego limitarlo a un tipo con "dónde"?

¿Cuál es la ventaja de usar esto:

 DataTable CopyToDataTable<T>(this IEnumerable<T> source) where T : DataRow

donde puedes hacer esto:

 DataTable CopyToDataTable<T>(this DataRow[] source)

Disculpen si es una pregunta tonta, soy nuevo en esto

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que hay dos partes en esto.

La primera es que aceptar un IEnumerable es más flexible que aceptar una matriz. ¿Qué pasa si el usuario tiene una List<DataRow> o algún otro tipo de colección? ¿Qué pasa si quieren pasar el resultado de una consulta de linq? Aceptar una matriz los obliga a asignar una nueva matriz solo para pasar a CopyToDataTable , y eso es un costo innecesario.

No hay ninguna razón por la que CopyToDataTable necesite una matriz: solo necesita un IEnumerable . Entonces, es mejor si solo acepta un IEnumerable .

Dicho esto, debido a la covarianza sería posible utilizar la firma:

 DataTable CopyToDataTable(this IEnumerable<DataRow> source)

... y los usuarios podrían pasar, por ejemplo, un IEnumerable<TableDetailsRow> (donde TableDetailsRow extiende DataRow ). Sin embargo, la covarianza solo se introdujo en C# 4, y ese método existe desde .NET 3.5, lo que significa que probablemente se escribió en C# 3. Dado que la covarianza no estaba disponible en ese momento, los genéricos eran la siguiente mejor opción.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda