gpt4 book ai didi

.net - 如何约束泛型参数以实现基本数学运算符?

转载 作者:行者123 更新时间:2023-12-04 22:38:33 25 4
gpt4 key购买 nike

有没有办法可以做到这一点?

我想要一个 T 的集合类,它能够对 T 类型进行加法、减法。我想保持 T 通用,而不是使用相同代码但类型不同的几个集合。

您将如何约束通用 T ?

示例:我想定义一个集合(T 为 IDoMaths)。我不想使用命名方法创建自己的整数等类来执行操作,因为我认为它会更慢。这部分代码实际上被非常频繁地调用,并且往往是性能的瓶颈。

最佳答案

不幸的是你不能。

Marc Gravell 有一个解决方法 implemented作为MiscUtil 的一部分(也有 more general article)。它很整洁,但是您确实会丢失静态类型检查。

类似地(就丢失类型检查而言)新的 dynamic C# 4.0 的特性允许您以任意方式使用运算符,仅在执行时解析它们:

dynamic x = 10.0;
dynamic y = 3.0;
double z = x / y; // z = 3.3333333 (double arithmetic)

dynamic a = 10;
dynamic b = 3;
int c = a / b; // c = 3 (integer arithmetic)

就在今天下午,我用它来实现 Enumerable.Sum 的动态形式。 .我即将对其进行基准测试。 Marc Gravell 写了一个 blog post最近也是关于这个的。

如果您使用的是 VB,可能只是转 Option Strict关闭您想要后期绑定(bind)的代码部分将产生相同的效果,但我对 VB 的熟悉程度不如对 C# 的熟悉,恐怕。

关于.net - 如何约束泛型参数以实现基本数学运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917961/

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