A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹停 中级黑马   /  2012-2-19 21:35  /  2020 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用 C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和 MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.
命名空间中的声明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.
基本的数据类型:C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与 Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10 进制数字.
两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.
参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.
与COM 的集成:C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说, JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.
索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.
代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中.

评分

参与人数 1技术分 +3 收起 理由
郑文 + 3

查看全部评分

2 个回复

倒序浏览
1、C#中有无符号数,Java没有。
2、C#中有值类型,且可自己定义值类型的结构体(struct)。
3、Java中的基本类型(或叫基元类型)即为值类型,但Java没有结构体,所以不能自定义值类型。
4、C#中的值类型(包括所有基本类型)间接继承自Object,有自己的方法可以调用;Java中的值类型(即基本类型)不继承自Object,只是简单的数据,没有方法可以调用。
5、C#中int等同于System.Int32,是值类型;bool等同于System.Boolean;等。
6、Java中int是基本类型,是值类型,而Integer是引用类型,Integer是int的包装器,int自身没有方法,Integer有一些方法;int与Integer之间可隐式转换(导致装箱和拆箱),但当Integer值为null的时候会在运行时抛出异常。boolean等类似。
7、Java中的int与Integer的对应在C#中类似int和Nullable<int>的对应,它们的后者都是前者的包装,且后者可以等于null。但Nullable<int>实际上仍然是值类型的(所以仍然很轻量级),所以从内存上讲C#中int和Object的对应更接近Java的对应一些。C#中Nullable<int>到int的转换必须显式进行,因为Nullable<int>中的值为null时会引发运行时异常。
其他基本类型与之类似。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不说内涵特点,说优点吧!
C#与JAVA这些语言差不多,易上手
VS编码工具强,特别是应用式软件,编码速度非常快
高度的封装.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马