【发布时间】:2010-11-29 19:25:19
【问题描述】:
目前,C# 中的泛型不允许任何理智的方式来执行算术。有一些笨拙的解决方法可用,但它们都不是很整洁,而且都降低了性能。 根据this interview,无法实现具有算术类型的接口,因此建议使用这样的解决方法。
但是你可以做的是让你的矩阵作为一个计算器的参数,在计算器中,有一个称为乘法的方法。你去实现它并将它传递给矩阵。
为什么我必须告诉高级编程语言如何加法和乘法? [因大众需求而编辑]
为什么不简单地将泛型限制为类型列表?
例如。
class Matrix<T> where T : int,long,float,double
语法当然可以不同。但是编译器只需要检查该类型是否在列表中,以及使用的运算符是否适用于所有类型,这应该比看似太难的接口建议要简单得多。
是否有任何明显的原因说明为什么无法实施?
【问题讨论】:
-
这个问题回答了你的问题:stackoverflow.com/questions/32664/…
-
不,它没有。它部分回答了一系列类似的问题,但最重要的问题(考虑到最后发布的“答案”)没有得到解答。
-
-1:主观/争论。 “这太愚蠢了……他甚至暗示这表明 C# 开发人员是多么有限。”
-
建议:您的问题似乎过于抽象,也许您可以添加一个示例,说明您想要做什么以及应该导致什么。
-
我是否可以建议您将其表述为“为什么不实施此应该?”。正如 Eric 所说,这可以由一个足够称职的开发人员来完成(尽管我很遗憾负责让小数像其他人一样工作的可怜人),就像大多数编程语言设计一样,它是关于权衡的。表现出你理解这一点(以及一些礼貌)会让你得到更好的回应......