AmongOthers

来源:互联网 发布:广东高职高考网络视频 编辑:程序博客网 时间:2024/05/16 05:08

======================================================
注:本文源代码点此下载
======================================================

比对java,c#的特性实现如下:

程序组织:

java中用域名表示的包来划分子程序;而c#中使用和c++一样的命名空间。(todo c#中的"::"运算符和"."在命名空间结构中的区别?)

todo java中一个应用程序由几个包组成,你可以发布一个包给其它人来使用,在c#中,可以发布一个命名空间吗?

c#并没有按照命名空间,在磁盘上将代码文件分开管理。

todo c#的访问控制

类型:

c#的基本类型有unsigned,但是java没有。

todo c#中的delegate类型。

c#中除了constant对应java中的final外,还有

// can be set to a const or a variable. may be initialized in a constructor.

readonly int max_height = 9;

对象:

c#的对象生命期和java一样,是由垃圾回收器确定的。todo finalize, dispose, close。c#使用析构函数,和java的finalize不同之处是,基类的析构函数(也意味着finalize函数)会在派生类的析构函数被调用的时候被调用。

运行时类型检查:c#提供 is 运算符实现运行时类型检查。

c#的getter和setter的语法糖衣,使用别名来控制访问,这样的目的是,你的访问行为可以包含逻辑代码,而不是简单的读写它的内存。

c#对于继承中的方法重载机制显得繁琐,还是觉得java中的默认重载比较符合面向对象的思想。

访问控制符:java对protected的解释和c++的不一致,它表示可以被同一个编译单元的对象访问。而c#和c++的一致,表示只有它的派生类可以访问。而使用了internal这个更加恰当的单词来表示同一个编译单元的访问权限。

java足以称得上对c#的killer feature就是内部类,c#不可以像java一样,在一个类的任意代码块中定义一个类,这样就没有匿名内部类;而且c#的所谓内部类不能使用外部类的方法,这使得c#的外部类对内部类来说,只是命名空间的类似作用,功能薄弱。

c#的delegate,额,函数子的概念吗?这个特性完全可以用interface代替的,像

thread t = new thread(new threadstart(wt.performtask));

的代码和java比较起来显得繁琐。

容器:

并行:

c#的同步方法的实现:

c# code

using system;

using system.runtime.compilerservices;

public class bankaccount{

[methodimpl(methodimploptions.synchronized)]

public void withdrawamount(int num){

if(num

感觉很蹩脚。

for each语法

foreach(string arg in args) ...

非静态代码


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击