Mar*_*k K -2 c# generics math types
目前,C#中的泛型不允许任何理智的方式来执行算术.有一些尴尬的解决方法,但它们都不是很整洁,所有这些都会降低性能.根据这次访谈,不可能实现具有算术类型的接口,因此提出了一种这样的解决方法.
但你可以做的是让你的矩阵作为计算器的参数,并在计算器中,有一个名为multiply的方法.你去实现它并将它传递给Matrix.
为什么我必须告诉高级编程语言如何添加和乘以数字? [由于受欢迎的需求而编辑]
为什么不简单地允许将Generic限制为类型列表?
例如.
class Matrix<T> where T : int,long,float,double
Run Code Online (Sandbox Code Playgroud)
语法当然可以是不同的.但是编译器只需要检查类型是否在列表中,并且所使用的运算符适用于所有类型,这应该比显然太难的接口建议简单得多.
是否有任何明显的原因导致无法实施?
Eri*_*ert 20
为什么不简单地允许将Generic限制为类型列表?
因为那时它不是通用的.泛型扩展了整个类型系统的表现力; 它们并不是一个廉价的搜索和替换机制,而是C++模板.
是否有任何明显的原因导致无法实施?
我否认这个问题的前提.如果我们想要违背泛型的基本设计原则,它就可以实现.哎呀,我可以在不到一个月的时间内实现它,我很确定,考虑到时间和预算.但是,我有其他优先事项.
这是非常愚蠢的.
好吧,当我周一看到安德斯时,我一定会告诉他,来自互联网的迈克K认为他的想法是愚蠢的.
他甚至暗示这一事实表明C#开发人员的数量有限.
实际上,我很清楚我的个人局限.我还有很多关于编程语言设计和实现的知识.
我还注意到,我们的预算以及我们无法控制的市场力量以及许多其他因素也受到限制.
最后,让我借此机会指出,对可以回答您问题的人施加个人侮辱是违背您回答问题的目标.如果您对这个主题感兴趣,可以考虑阅读我关于这个主题的短文:
http://blogs.msdn.com/ericlippert/archive/2008/02/20/how-to-not-get-a-question-answered.aspx