C#动静结合编程之一: 接口和委托的约束强度
2009-03-17 08:19:04 来源:WEB开发网核心提示:程序世界有两种神秘的元素,它们无处不在,C#动静结合编程之一: 接口和委托的约束强度,却常常未被察觉,它们一动一静,协议意味着运行时的不确定性,方法A完全可能在返回结果中装入非string类型的元素,却又和谐相处,我给这对兄弟取上不太恰当的名字
程序世界有两种神秘的元素,它们无处不在,却常常未被察觉。它们一动一静,却又和谐相处。我给这对兄弟取上不太恰当的名字,一个叫“协议”,一个叫“约束”。我们常常看到的动态语言、静态语言背后,本质上就是“协议”与“约束”两种元素的作用。
C#是一门优美的语言,它融合了静态和动态的优势,如果运用得当,必能动静结合,呈现出一种和谐之美。特别是.NET平台和语言的快速发展,更展现了动静结合编程的活力。本篇是.NET动静结合编程的第一篇,希望这个系列能和大家一起探讨如何在.NET平台上最大限度的发挥动静结合的潜能。
本人还只是.NET的初学者,对计算机理论的理解还很肤浅,文中错误欢迎批评指正,不足之处欢迎补充,谢谢!
PS:不加特殊说明时,本文提到的"动态"或“协议”是指程序的运行时协议,包括但不限于动态类型;“静态”或“约束”是指程序的编译时语法约束,而语义约束归为协议一类。
被忽略的协议
谈到“协议”,最先浮现在我们脑海中的可能是TCP/IP协议栈,但其实我们随处都在和协议打交道。下面的例子,你看出协议来了吗?
B(){
ArrayList lst = A();
foreach (string item in lst){
Console.WriteLine(item.Length);
}
}
方法B假定方法A遵守:返回的ArrayList内部都是string类型的元素。这就是它们之间的协议,这个协议不受编译器静态检查的约束。所以,协议意味着运行时的不确定性,方法A完全可能在返回结果中装入非string类型的元素,而这将导致B在运行时产生异常。
- ››结合照片打造时尚炫酷的草图效果
- ››结合 Dojo 和 JAX-RS 创建 RESTful 服务
- ››编程实例 一个简单的智能感知效果
- ››结合 GFX,DnD 与 Dijit 创建基于 Dojo 的 Web 图...
- ››结合使用 CICS 和 DB2 pureXML
- ››结合使用 IBM InfoSphere Warehouse Design Studi...
- ››结合使用 IBM InfoSphere Warehouse Design Studi...
- ››结合使用 Apache Geronimo 和 Lift:用 Lift 创建...
- ››结合使用 Ajax 和 WebSphere Portal
- ››结合使用 WebSphere Application Server V7 和 IP...
- ››结合数位板鼠绘漂亮的绿色卡通插画
- ››结合IA制作漂亮的花纹立体字
更多精彩
赞助商链接