C#纵横谈第一部分C#闪亮登场

C# 是从 C 和 C++ 中派生出来的,因此具有 C++ 的功能,它又同 VB 一样简单。对于 web 开发而言, C# 象 Java ,同时具有 Delphi 的一些优点。 Microsoft “号称” C# 是开发 .NET 框架应用程序的最好语言,它的前景如何,让我们拭目以待。

C# 闪亮登场。

先来看 C# 从 Java 里“盗用”了什么。 C# 比 Java 产生的晚,这为它的盗用创造了“天时”,所以 C# 可以站了 Java 这个前人的肩膀上。 C# 为什么“盗用” Java 的技术呢?当然盗用的那一部分都是 Java 超出原先 C++ 的地方(当然,这一部分对 C++ 造成了巨大的市场冲击), Microsoft 又一次采取了 “ 拿来主义 ” 的手法,很好地利用了 Java 的众多特性,隆重推出了 Windows 平台的 C# 这一新锐力量,实在是高明, C# 的登场无疑是“闪亮”的。这些“盗用”包括: 两者都摈弃了 C++中函数及其参数的const修饰,宏代换,全局变量和全局函数等许多华而不实的地方 ,指针没了,另外也不需要自己释放内存了,这将减少平常出错的 50% 。当去掉指针和增加垃圾回收机制之后,奇迹就会发生, bug 的出现量就注定会大大地减少,内存泄露也不会发生了。另外,英明神武的 C# 学会了 Java 的单根机制,也实现了“ all are objects ”了,抛弃了原先 C++ 的多根机制和类之间的多重继承,因为那两个东东实在是太讨厌了,搞的许多类在一起象个“网”一样。现在好了,统统地都是 object 的儿子或者孙子或者孙子的儿子的儿子的儿子了 ┈┈,大家都姓 object了,object统一天下了。 但是我不能不让你“多重继承”,所以好,我引入“接口”这个概念,我不让你直接“连网”,我搞出个东东跟你们都联系起来,跟你们接口,行使“通讯员”的功能,不然的话,为了实现多重继承你这个类就可能有不只一个老爸。 C# 不忍心看着老一辈“ 指针崇拜者”掉眼泪,并没有彻底地抛弃指针, C# 允许我们在 unsafe 上下文中进行指针操作。

乖乖,怎么样使代码平台无关呢? Java 引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是一个真实的机器。当 Java 编译器结束了一个源文件的编译后,所得到的不是可以立即在一个给定平台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支持 Java 。而 C# ,当编译源代码为 .exe 文件后,启动 .exe 时, CLR 将提取编译器写入代码中的重要元数据。接着,一个叫做 Just-In-Time 编译器的模块将代码映射到特定的 CPU 中,开始实际的执行过程。这无疑也高明地盗用了 Java 虚拟机的概念。但是, Java 是平台无关的而 C# 在很大程度上只适合 Windows 操作系统, C#在跨平台方面似乎更热衷于XML Web Services互操作,而不是跨平台编程。

当在 c/c++ 定义 a[10] 这个数组时,元素 a[10] 甚至 a[100] 这个非法访问它不会提示错误,但是你已经不知道 a[100] 跑到哪里去了 ( 悟空啊,我早就告诉过你,不要乱扔东西嘛,砸到小朋友了就不好了,就是没有砸到小朋友,砸到花花草草的也不好啊 ) ,你这样的操作 a[100]=1 是十分危险的一个动作。 数组的索引越界检查,类型安全在 Java中被提到了相当的高度,a[10]一旦出现,不客气,你错了,我抛出异常,我绝不姑息你,因为姑息就会养奸 。 C# 学到了这一套了,而且更加厉害了,在异常处理方面,不管从内置支持, 还是从执行效率来讲, C#都较Java略胜一筹了。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus