|
|
1
5
当面临使用带有接口约束的泛型与使用带有接口类型的非泛型的选择时,只有在作为泛型参数传递的某些或所有类型都是值类型的情况下,我才会选择泛型+接口。这将防止我的实现在处理我的
例如,如果接口恰好
请注意,为泛型类提供功能的另一种方法是将委托与值一起传递。例如,如果你计划做这样的事情
您也可以这样做:
第二种解决方案允许您将评分功能与正在评分的类型“解耦”,代价是让调用者再写一点代码。 |
|
|
2
4
我认为对一般论点施加约束没有错。有一个通用参数并不意味着“这对任何事情都有效”,它意味着代码有多种意义。
它可能实际上暴露了一个完全通用的概念,比如
约束只是一种机制,用于告诉世界在什么情况下类是有意义的,并使您能够以合理的方式实际使用(受约束的)参数,即调用
这种情况的极端是当上下文非常受限时,即如果只有两种可能的实现怎么办?事实上,我在当前的代码库中有这种情况,并且我使用泛型。我需要对一些数据点进行一些处理,目前(以及在可预见的未来)只有两种数据点。原则上,这是我使用的代码:
即使在这种受约束的情况下,这也是有意义的,因为我只有一个处理器,所以只有一个逻辑需要处理,而不是两个单独的处理器,我必须努力保持同步。
这样我就可以有一个
如果我需要一个处理器来处理任何事情,只要它是
此外,@dasblinkenlight的回答中提出的观点是非常有效的。如果泛型参数可以是结构和类,那么使用泛型将避免任何装箱。 |
|
|
3
2
泛型通常用于使用接口或基类(这包括
所以,如果你从另一端接近逻辑。关于类型限制的决定应该与选择函数参数类型时的决定相同。 |