有没有办法可以做到这一点?
我想有一个T的集合类,可以在T类型上做加法,减法.我想保持T泛型,而不是让几个集合具有相同的代码,但不同的类型.
你如何约束通用T?
示例:我想定义一个Collection(T作为IDoMaths).我不想用命名方法创建我自己的整数等类来进行操作,因为我觉得它会慢一些.这部分代码实际上经常被调用,并且往往是性能的瓶颈.
不幸的是你不能.
有一个解决方法,Marc Gravell已经将其作为MiscUtil的一部分实现了(也有一篇更为一般性的文章).它很整洁,但你确实失去了静态类型检查.
在类似的情况下(在丢失类型检查方面)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)
Run Code Online (Sandbox Code Playgroud)
就在今天下午,我用它来实现一个动态的形式Enumerable.Sum.我即将对它进行基准测试.Marc Gravell 最近写了一篇关于此事的博客文章.
如果你正在使用VB,那么Option Strict关闭你希望延迟绑定的代码部分可能会产生相同的效果,但是我不熟悉VB,就像我对C#一样熟悉,我很害怕.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |