Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

349
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!