C# 中的 IArithmetic<T> 接口

IArithmetic<T> interface in c#

我研究了 c# 源代码参考。我遇到了有趣的 IArithmetic<T> 接口。例如,Int32Double 包含 IArithmetic 接口的注释实现。我对这些细节很感兴趣。据我了解,它是尝试添加 "supporting" 的算术运算。但为什么他们评论?添加支持泛型 "operators" 的方法不好吗?

它可能由于性能原因和可用性不高而被废弃。

通过接口支持算术运算的原始类型确实不是一个非常有吸引力的场景;由于必要的装箱和拆箱,与简单地使用值类型本身相比,性能会很糟糕。

有什么可能的用途?好吧,第一个 spring 想到的是以下场景:

public Matrix<T> where T: IArithmetic<T>

之类的。尽管这可能很有趣,但由于性能原因,可能需要通过其他方式解决,而不是通过接口;阅读 this 以获得关于该主题的非常有教养的思考。

最重要的是,如果您确实需要类似于 Arithmetic<T> 的东西,您总是可以通过增加间接级别来构建自己的东西。