使用这个有什么好处:
DataTable CopyToDataTable<T>(this IEnumerable<T> source) where T : DataRow
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
DataTable CopyToDataTable<T>(this DataRow[] source)
Run Code Online (Sandbox Code Playgroud)
对不起,如果这是一个愚蠢的问题,我是新手
我认为这有两个部分。
首先是接受一个IEnumerable比接受一个数组更灵活。如果用户有一个List<DataRow>,或其他一些集合类型怎么办?如果他们想传递 linq 查询的结果怎么办?接受一个数组会迫使他们分配一个新数组来传递给CopyToDataTable,这是不必要的成本。
没有理由CopyToDataTable需要一个数组:它只需要一个IEnumerable. 所以最好是只接受一个IEnumerable.
也就是说,由于协方差,可以使用签名:
DataTable CopyToDataTable(this IEnumerable<DataRow> source)
Run Code Online (Sandbox Code Playgroud)
...并且用户将能够传递例如 an IEnumerable<TableDetailsRow>(where TableDetailsRowextends DataRow)。然而,协变只在 C# 4 中引入,并且该方法从 .NET 3.5 开始就已经存在,这意味着它可能是用 C# 3 编写的。由于协变当时不可用,泛型是下一个最好的东西。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |