终于知道C#的动态类型有什么用了。
时间:2011-12-17
来源:互联网
先看下面这个函数
C# code
在C++中这是最最基本的函数模板,但是在C#中代码通不过,因为泛型不是模板,它不会生成多份代码,T是当做object来处理的,因此不能用来进行加法运算。
但这样的加法泛型是非常有用的,最初的想法当然是使用泛型约束,然而不存在基本数据类型的一个基类或者借口,提供了加法运算。
好在C#4.0中添加了动态类型,有关动态类型的表达式都会在运行时求解,这样我们就有可能实现有针对性的加法运算:
C# code
经过测试代码通过了编译,并给出了正确的结果。
泪流满面,传说中的矩阵泛型类终于有实现的可能了。
C# code
public static T Sum<T>(params T[] Args) { T sum = Args[0]; for (int i = 1; i < Args.Length; ++i) { sum += Args[i]; } return sum; }
在C++中这是最最基本的函数模板,但是在C#中代码通不过,因为泛型不是模板,它不会生成多份代码,T是当做object来处理的,因此不能用来进行加法运算。
但这样的加法泛型是非常有用的,最初的想法当然是使用泛型约束,然而不存在基本数据类型的一个基类或者借口,提供了加法运算。
好在C#4.0中添加了动态类型,有关动态类型的表达式都会在运行时求解,这样我们就有可能实现有针对性的加法运算:
C# code
public static T Sum<T>(params T[] Args) { dynamic sum = Args[0]; for (int i = 1; i < Args.Length; ++i) { sum += Args[i]; } return sum; }
经过测试代码通过了编译,并给出了正确的结果。
泪流满面,传说中的矩阵泛型类终于有实现的可能了。
作者: osyxz2011 发布时间: 2011-12-17
这叫泛型,你说有啥用,类似c++中的模板
作者: bdmh 发布时间: 2011-12-17
泛型约束能够帮助我们不出错,但有时它又管得太多了,使得它与模板相比有灵活性的缺失,而动态类型就可以突破这个限制,使我们得到类似于模板的体验。
作者: osyxz2011 发布时间: 2011-12-17
真能扯。你测试什么了?你拿(比如说)DbConnection类型的对象来来搞+运算了么?你肯定说“用DbConnection来测试这个+运算时吃饱了撑的,不可能给出正确结果”。是的,写出这样的代码其实就是自欺欺人的,你只有在运行时到某个时间才知道有多悲剧,此时已经完了。
编写强类型的程序,不是仅仅是为了提高一百倍性能,更主要地是为了保证软件品质!我想你都没有把握住这种原则,你的感觉现在还是“越是野路子越方便”。
编写强类型的程序,不是仅仅是为了提高一百倍性能,更主要地是为了保证软件品质!我想你都没有把握住这种原则,你的感觉现在还是“越是野路子越方便”。
作者: sp1234 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28