易截截图软件、单文件、免安装、纯绿色、仅160KB

方法多态与Duck typing;C#之拙劣与F#之优雅

文 / 李博(光宇广贞)
方法多态与类型多态
       了解 OOP 的同学对类型多态都很熟悉了。话说,类型多态之多态便体现在方法上,那方法多态又是嘛玩儿?类型多态之类型指的是对像的类型,其方法是受对像约束的。方法多态便是不受对像类型约束的多态。具体区别在:

方法多态无需继承;类型多态必须实现接口或类继承。
方法多态不管你是谁,只在乎你能干嘛;类型多态讲究你出自何门何派。
方法多态的对像兼容性只需其实现运行期被实际调用的方法部分;类型多态的对像兼容性要求 A is-a B,也即不管用得着用不着,只要你拜了师傅,就得全部实现。

Duck typing 与方法多态
       Duck typing 是种动态语言的程序设计风格,用以实践方法多态。概念提出者 James Whitcomb Riley 同学如是说:
       当看到一只鸟走起来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那这只鸟就可以被当做鸭子。
       Duck typing 并不关注对像的类型,而是关注其表现。我们让某个对像去“走两步儿”,去“游两下”,去“叫两声”;若对像无法完成指定动作,则抛出运行时异常——它是运行期检查的。Duck typing 没有任何静态检查,如类型检查、属性检查、方法签名检查等。Guido van Rossum 同学认为,Duck typing 的安全性依赖良好的文档、清晰的代码和完备的测试。举一个 Python 语言的例子:
图一
       代码言简意赅。鸭子和人两种动物都会 Quack,于是均可传入 CheckAsDuck 方法处理。CheckAsDuck 只管丫会不会鸭叫,才不管丫是什么东西。而这种做法在 OOP 思想里是不可理喻的。
Duck typing 引发的严重问题
       Duck typing 表现了动态语言的程序设计思想,其与静态语言强调的类型检查不同之处在于:动态语言假设你会做某个动作,运行时可能会发现你其实做不来;静态语言必须运行前就得确定你能否做得来。Duck typing 更像是种协议,体现着开放与自由——我们欢迎你来参与,希望你能遵守彼此的协约;若你违背或没能完成指定安排,代价就是运行时异常。而静态类型检查更像是种约束,架了道门槛儿——想进来?先看自己够不够格儿!
       开放与自由


相关文档:

C#操作ACCESS数据库(创建,压缩,备份,恢复)(转载)

下面这段C# 代码可以用来压缩和修复Access数据库,不管它是一个简单的".mdb"ACCESS数据库还是一个".mdw"网络共享数据库,这个过程和你在用MS Access应用程序中使用的"工具-数据库实用工具-压缩和修复"时执行的操作完全一样.实例代码使用了"迟绑定"(运行中在内存中建立COM对象),这样就不需要在工程中加入COM引用了,也不需要在P ......

C#中操作XML Node节点细节操作

用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
  &n ......

C#关于sqlserver中读取image类型

今天在网上找了许久关于sqlserver中存储image类型和读取image的方法,可是都是那么一点,故在此罗列一下,希望可以帮助大家。
首先是关于dataGridView的绑定。代码见下
private void button_show_Click(object sender, EventArgs e)
{
string sqlText = "server=localhost;initial catalog=Test; ......

SQL SERVER数据类型与C#数据类型对照表

bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 Int64
int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。 Int32
smallint 从 -2^15 (-32,768) 到 ......

c#中高效的excel导入sqlserver的方法

本文转自:http://blog.csdn.net/jinjazz/archive/2008/07/14/2650506.aspx
    将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号