码迷,mamicode.com
首页 > 编程语言 > 详细

C#和java的对比及总结

时间:2018-12-27 18:19:54      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:引用   应该   变量   assign   区别   概念   base   枚举   调用   

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的对比及总结

标签:引用   应该   变量   assign   区别   概念   base   枚举   调用   

原文地址:https://www.cnblogs.com/silentdoer/p/10185139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!