C#和java的对比及总结

Posted silentdoer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#和java的对比及总结相关的知识,希望对你有一定的参考价值。

1.Java里的AClass.class得到的Class<T>类的对象对应C#的typeof(AClass)得到的Type类型的对象;(但是C#如果要反射创建对象是用Type对象的Assembly对象)

2.之前一直纠结于c#的委托类型变量是小驼峰,如Func1 func = Console.WriteLine;然后func("uu");的调用是不一致的,但是现在可以这样子func.Invoke("uu");这样就一致了(注意如果是void它是会返回null的)

3.c#里void也是有类似java的void.class的,是typeof(void),C#用反射GetMethod("test")时也可以通过ReturnType判断其是否是等于typeof(void)

4.C#Delegate和delegate的区别就像是Java的Enum类和enum关键字的区别,所有enum关键字创建的枚举类都是继承Enum类,这点delegate也是一样的;

注意C#里Delegate和delegate是不一样的概念,但是String和string则可以认为是完全一样的(C++里的别名一样或C语音里的宏);

它们的主要区别是delegate关键字是用来声明类型,而string关键字是用来声明变量/引用;

5.Java的a instanceof A(or Base)对应C#的是a is A;

6.typeof(Delegate).IsAssignableFrom(typeof(Func1))在Java的反射里也是有相关的Api的;

7.Java里AClass.class是synchronized static method()锁的对象,AClass这个名字和C#一样是没有意义的,然后C#里比较对应AClass.class的是typeof(AClass)或aClass.GetType();

8.C#的Type比Java的Class要高明,因为Class实际上是Class<T>,然后比如Class<AClass> clazz = AClass.class;但是注意Class变量按理说本来就是用来代表一个类的元数据,那就不应该还有什么泛型的说法;所以C#的Type没有泛型是合理的;

以上是关于C#和java的对比及总结的主要内容,如果未能解决你的问题,请参考以下文章

c#语法与java语法的对比分析

求斐波那契数列第n位的几种实现方式及性能对比(c#语言)

ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观

对比Java和.NET多线程编程

SSH和SSM对比总结

程序员带你学习安卓开发,十天快速入-对比C#学习java语法