2006年1月8日
摘要: 在动态编程时,我们常常需要运行时确定调用对象的哪个属性或哪个方法。这个任务通常可以用反射来解决。但众所周知,反射的性能要比静态指定的方式低很多,因为反射要通过运行时复杂的机制完成。能否获得性能和灵活性兼备的动态调用?我在开发VBF的最新功能时反复考虑了这个问题。我们通常动态调用一个对象的属性是采用这样的手法,假设对象a有一个属性叫做MyProp: Type t = a.GetType();Prop... 阅读全文
posted @ 2006-01-08 15:48 装配脑袋 阅读(2669) 评论(3) 推荐(0) 编辑
2005年11月26日
摘要: 除了J#外,所有微软支持的.NET开发语言现在均支持运算符重载,因此纯粹为C#简化写法一样特性现已成为一种.NET开发中值得研究的一项重要语言特性。有人认为运算符重载其实就是简化写法,满足模拟基本类型操作的小功能,没有必要深究。但我觉得要多思考一层,为什么我们总希望模拟基本类型的操作?因为运算符重载能够将操作中缀化,能够自动推测静态过程的主体。 首先是操作中缀化。函数调用其实是一种前缀操作,函数(... 阅读全文
posted @ 2005-11-26 11:05 装配脑袋 阅读(2093) 评论(4) 推荐(1) 编辑
2005年11月11日
摘要: 很早就开始VBF的设计,在经历开发和调整了两个月的时间后,VBF的第一个BETA版终于和大家见面了!我是从前一阶段博客园上较为流行的动态语言讨论上获得灵感。我主要不是想写一个动态语言,而是发现很多动态语言共有的特征——不同程度地支持函数式编程(Functional Programming,FP)。这是一种显著不同于命令式编程(目前的VB,和C#均为命令式编程语言,面向过程和面向对象也是命令式编程范... 阅读全文
posted @ 2005-11-11 08:55 装配脑袋 阅读(2589) 评论(16) 推荐(0) 编辑
2005年11月4日
摘要: 今天[ IceSharK - PP.Poet ]很清纯地提出了一个问题,如何能做到函数返回值重载?简单的说,就是如何实现 string Test() {...} int Test() {...} 然后通过接受方的上下文自动选取重载: int i = Test(); string s = Test(); 当然VB或者C#都是不允许这样写的。不过IL并没有禁止这一写法,事实上在VB或C#中有一种语法结... 阅读全文
posted @ 2005-11-04 19:57 装配脑袋 阅读(4605) 评论(33) 推荐(1) 编辑
2005年10月19日
摘要: 我在介绍Visual Basic 9.0的时候,曾经多次提到Tuple这个概念,当时是作为匿名类型的实例出现的。现在我们单独来讨论一下这个概念。Tuple常常译为“组元”,在大部分支持Tuple的语言中,常常表示成员数目确定,每个成员类型也确定的结构。常常用于表示函数的多个返回值或者查询的结果等。Tuple应当是强类型的,即所有成员的类型在编译时确定。比如,假想语法下 Dim t = New Tu... 阅读全文
posted @ 2005-10-19 09:00 装配脑袋 阅读(6405) 评论(6) 推荐(4) 编辑
2005年10月12日
摘要: 本期是Visual Basic 9.0前沿播报动态篇的第三篇,也是这个系列的完结篇。按照惯例,我将Visual Basic 9.0最激动人心的部分放在了这一篇。在这一篇,我们将看到所有新特性作用在XML上之后带来的革新性变化。 Visual Basic 9.0专门为XML集成设置了一个开发组,力求将XML语言与Visual Basic语言完全结合,使Visual Basic成为全行业对XML支持最... 阅读全文
posted @ 2005-10-12 10:22 装配脑袋 阅读(1994) 评论(6) 推荐(0) 编辑
2005年10月9日
摘要: 在谈到动态语言与静态语言的区别时,有一句很经典的话:Static typing when possible, dynamic typing when needed。Visual Basic支持后期绑定和动态标识符,因此完全可以按照对象的运行时类型进行操作。只是后期绑定或动态标识符缺乏对参数或返回值类型的约束,仅仅按照成员的名称进行操作。举一个例子:在静态篇我们介绍过匿名类型,假设有3个匿名类型的实... 阅读全文
posted @ 2005-10-09 09:04 装配脑袋 阅读(1484) 评论(3) 推荐(0) 编辑
2005年9月28日
摘要: 动态语言今年来发展很快,各种脚本语言多少都带有些动态语言的特点。动态语言以其灵活的语法和丰富的运行时行为赢得了许多人的青睐。在.NET阵营,C#一直扮演着静态语言的角色,尽管3.0的语法改变很激进,但仍注重于编译时的类型检查和约束。动态特性用的不好会产生更多运行时问题,不易确保程序的可靠性,但其提高开发效率的作用是毋庸置疑的。Visual Basic 9.0是Visual Studio中唯一能让你... 阅读全文
posted @ 2005-09-28 09:36 装配脑袋 阅读(1764) 评论(7) 推荐(0) 编辑
2005年9月27日
摘要: 本期介绍的两个VB9作为数据开发辅助功能的新特性。 阅读全文
posted @ 2005-09-27 14:40 装配脑袋 阅读(1511) 评论(3) 推荐(0) 编辑
2005年9月21日
摘要: 前面所介绍的Visual Basic 9.0新特性,初衷都是为了迎合.NET Framework新的数据框架——Linq。Linq的一个口号是“让查询无处不在”,它将类似SQL的语法强类型地引入到Visual Basic中,而且可以任意组合使用。不要以为只是把数据库的SQL写到VB中而已,那样就太小看Linq了。VB的目标是让一切包含数据的对象都可以用类SQL查询,包含数据库映射对象(DLinq)... 阅读全文
posted @ 2005-09-21 09:40 装配脑袋 阅读(1362) 评论(1) 推荐(0) 编辑