Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

350
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda