c# - 如何在泛型类 c# 中为运算符使用 where?

标签 c# generics operator-keyword generic-constraints

<分区>

嗨,我想上课:

class Matrix <T>
    where T : // I don't know what to write here
{
    T[][] elements;
}

我希望 T 可以被 + 和 * 运算符相加和相乘

最佳答案

我强烈建议您看一下 Messrs Skeet 和 Gravell 的“MiscUtil”库:

http://www.yoda.arachsys.com/csharp/miscutil/

其中包含一个令人难以置信的“通用数学运算符”实现,它应该与您创建通用矩阵数学类的尝试很好地对齐。它实际上让我(有点)想起了 python 以及它如何处理直接引用运算符函数。

(除了@jon-skeet:这是否有可能进入 Nuget?)

他们测试中的一些示例用法:

double sumOperator = 0;
for (int i = 0; i < COUNT; i++)
{
    sumOperator = Operator.Add(sumOperator, rand.NextDouble());
}

int sumOperator = 0;
for (int i = 0; i < COUNT; i++)
{
    sumOperator = Operator.Add(sumOperator, rand.Next(MAXVALUE));
}

关于c# - 如何在泛型类 c# 中为运算符使用 where?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758815/

相关文章:

c# - 属性 getter 和具有一个参数的方法之间怎么会存在歧义呢?

java - 实现采用枚举的接口(interface)的类

c# - 使用反射将项目添加到通用列表/集合

C++ 运算符重载总是 false

c# - "run text"标记在 XAML 中意味着什么?

c# - 使用 Autofac 配置 AutoMapper 以实现 ITypeConverter<,> 构造函数依赖

加号运算符的 C++ 重载

c++ - 小于重载 C++

c# - 如何使用 Entity Framework 将我的更改保存到数据库?

java - 如何比较通用 LinkedList 中的对象