gpt4 book ai didi

c# - 为什么要使用通用类型然后将其限制为具有 "where"的一种类型?

转载 作者:行者123 更新时间:2023-12-05 09:04:27 26 4
gpt4 key购买 nike

使用它有什么好处:

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

在哪里你可以这样做:

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

对不起,如果这是一个愚蠢的问题,我是新手

最佳答案

我认为这有两个部分。

首先是接受 IEnumerable比接受数组更灵活。如果用户有 List<DataRow> 怎么办? ,或其他一些集合类型?如果他们想传递 linq 查询的结果怎么办?接受一个数组迫使他们分配一个新数组只是为了传递给 CopyToDataTable ,这是不必要的成本。

没有理由 CopyToDataTable需要一个数组:它只需要一个 IEnumerable .所以最好它只接受 IEnumerable .

也就是说,由于 covariance可以使用签名:

DataTable CopyToDataTable(this IEnumerable<DataRow> source)

... 用户将能够通过例如一个IEnumerable<TableDetailsRow> (其中 TableDetailsRow 扩展 DataRow )。但是,协方差仅在 C# 4 中引入,并且 that method自 .NET 3.5 以来一直存在,这意味着它可能是用 C# 3 编写的。由于当时协方差不可用,泛型是下一个最好的东西。

关于c# - 为什么要使用通用类型然后将其限制为具有 "where"的一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68618503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com