zoukankan      html  css  js  c++  java
  • java与C#区别1

    1.         Main方法(入口)

    唯一的四种格式:

    static void Main(string[] args)

    static void Main()

    static int Main(string[] args)

    static int Main()

    C#中一个项目只允许一个Main入口,且大写!

    Main方法返回值只为void or int 前面没有修饰符

    2.         数据类型方面。

    a)       C#定义了struct(结构),不能是抽象的,也不能被继承,是值类型的。

    b)      C#没有基本类型的概念,全部是面向对象的类型,intInt32的简写。

    c)      Javaconst是保留字,finalC#中的const意思相同,C#中还有readonly允许运行时赋初值。

    d)      字符串比较,C#中可以用=比较值,与Java一样用StringBuffer来减少内存开销。

    e)       JavaString是引用数据类型,C#string是基本数据类型。

    3.         运算符方面

    C#增加了CheckedUnchecked以绕过编译错误。比如“把一个long付给int32 ,如果高32为零,则不会出错,否则会有溢出错误,unchekced就是告诉编译器不要去管溢出,尽你可能转化”

    4.         分支语句方面

    Javagoto是保留字。C#switch中的case不会顺序执行,末尾必须有break或者goto关键字;java中不用。同时case中的数据类型不仅支持intchar,还支持其它数据类型。

    5.         属性:

    java中定义和访问均要用getset方法,可以不成对出现。

    c#中是真正的属性,定义时getset必须同时出现,访问时用.号即可。不用get,set

    6.         数组:

    int[] x = { 0, 1, 2, 3 };

    int x[] = { 0, 1, 2, 3 };

    但在C#中,只有第一行代码合法,[]不能放到变量名字之后。

    7.         Java中,包的名字同时也是实际存在的实体,它决定了放置.java文件的目录结构。在C#中,物理的包和逻辑的名称之间是完全分离的

    .NET中包的实体称为程序集(Assembly)。每一个程序集包含一个manifest结构。manifest列举程序集所包含的文件,控制哪些类型和资源被显露到程序集之外,并把对这些类型和资源的引用映射到包含这些类型与资源的文件。程序集是自包含的,一个程序集可以放置到单一的文件之内,也可以分割成多个文件。.NET的这种封装机制解决了DLL文件所面临的问题,即臭名昭著的DLL Hell问题。

    8.         访问修饰符方面:

    C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#5种类型的可访问性,如下所示:

    public:成员可以从任何代码访问。

    protected:成员只能从派生类访问。

    internal:成员只能从同一程序集的内部访问。

    protected internal:成员只能从同一程序集内的派生类访问。

    private:成员只能在当前类的内部访问。

    9.         由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词

    10.     继承方面:

    C#增加了base关键字以指向父类。C#中父类方法中具有virtual关键字的才可以被子类重写,重写时还需要声明override。与抽象类相同,abstract关键字也必须被override重写。

    11.     运算符重载

    Java中无。运算符重载必须为类的静态方法,重载==,其他判断操作也必许重载。

    12.     C#增加了索引器,可以象访问数组一样访问类或结构。

    13.     Java不同,C#中的接口不能包含域(Field)。

    另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。

    14.     异常方面

    Java非常相似,只是没有throws关键字,无须截获异常(当然要在程序主入口去截)。

    15.     方法方面

    Java相同,只有基本类型通过值传递,其他都是传递引用。不过C#也可以以引用的方式传递基本类型,利用ref关键字。而out关键字有些类似于Oracle存储过程,与ref的区别在于:方法忽略out参数初始值,方法必须为out参数赋值。

    16.     C#中也可以直接使用指针,开辟或者回收内存,只是要使用两个关键字unsafefixed

    17.     委托

    委托(delegate)可以看作C++或者其他语言中的函数指针

    委托用来封装可调用方法。你可以在类里面编写方法并在该方法上创建委托,此后这个委托就可以被传递到第二个方法。这样,第二个方法就可以调用第一个方法。

    委托是从公共基类System.Delegate派生的引用类型。定义和使用委托包括三个步骤:声明,创建实例,调用。委托用delegate声明语法声明。

  • 相关阅读:
    HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
    POJ1185 炮兵阵地 —— 状压DP
    BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
    TopCoder SRM420 Div1 RedIsGood —— 期望
    LightOJ
    LightOJ
    后缀数组小结
    URAL
    POJ3581 Sequence —— 后缀数组
    hdu 5269 ZYB loves Xor I
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1624936.html
Copyright © 2011-2022 走看看