Java

C#

访问修饰符 public

修饰类、接口、变量、方法。

对所有类可见。

修饰类、接口、变量、方法。

对所有类可见。

  internal 无。

修饰类、接口、变量、方法。

类,接口的缺省访问修饰符。

同一个程序集的对象可见。

  protected 子类可见。 子类可见。
  private 类内部可见。

变量,方法的缺省访问修饰符

类内部可见。

  default 

类、接口、变量、方法的缺省修饰符。

同一包内可见。

无。
基本类型  

基本类型,无方法可调用。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

值类型,继承object,具有ToString()等方法。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

   布尔值  boolean  bool
   整形  short,int,long  short,int,long
   浮点数  float,double  float,double
 可空基本类型    例如:Integer是引用类型,Integer是int的包装类。  例如: int?其实是Nullable<int>的语法糖,而Nullable<int>依然是值类型。
   布尔值  Boolean  bool?
   整形 Short,Integer,Long  short?,int?,long?
   浮点数  Float,Double  float?,double?
   高精度数值类型  BigDecimal  decimal?
 源文件组织  导入  使用包的概念,关键字import导入 使用命名空间的概念,关键字using导入
   类文件

源文件名要和Public类名保持一致,

最多存在一个Public修饰的类,

文件名后缀是.java

没有java中的限制,

文件名后缀是.cs

 枚举  枚举

关键字enum,

引用类型,

和class差不多,可以有字段和方法,

可以添加私有构造函数

关键字enum,

值类型,

默认继承int,可以继承其他值类型

 常量 常量   关键字final修饰变量,字段,定义时赋值

关键字const修饰变量,字段,定义时赋值

关键字readonly修饰,可以在构造函数中赋值

 密封  密封  关键字final修饰方法,类,表示不可继承,不可重写  关键字sealed修饰方法,类,表示不可继承,不可重写
 属性 属性

只有字段概念,

一般情况下是要定义字段XX,方法getXX()和setXX()

C#引入属性概念,简化了操作,

只需要定义XX{get;set;}

 判断类型  判断类型  Instanceof               is
 锁  锁  Synchronized      Lock 
 接口  接口

关键字 implements,

使用注解@Override

和继承类一样,使用符号:

实现类中的方法,不需要使用override关键字,

一般命名需要用大写字母I开头

抽象类

abstract

使用注解@Override

abstract,

重写方法需要使用override关键字

  分部类

partial

可以将分布在不同文件,而在相同命名空间下,相同名称并用partial标识的类合并,多用于wpf,winform框架上。

  匿名类

如Runnable hello = new Runnable() { public void run() { System.out.println("hello"); } };

简化了定义子类的步骤。

无。类似的场景基本都是用委托的

  内部类

在new的使用上,内部类要和外部类关联起来

在new的使用上,内部类和外部类用法无区别

匿名方法 匿名方法

无。

使用delegate声明匿名方法,

delegate(int x)

{

Console.WriteLine("Anonymous Method: {0}", x);

};

虚拟方法 虚拟方法

默认都是虚拟方法

virtual标识虚拟方法,子类用override重写

静态 静态类 使用关键字static

使用关键字static,

可以有静态构造函数,

传参 引用传递

在方法参数加上ref,out,使参数按引用传递

即方法内改变参数的值,也会影响到方法外的值

  不定长参数
如int...
如params int[]
 流程控制  循环

关键字for有两种用法

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

for(声明语句 : 表达式) {

//代码句子

}

 分别为for和foreach

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

foreach (声明语句  in 表达式)
{
//代码句子
}

 字符  字符

String,引用类型,

需要使用方法equals比较是否相等

string,引用类型,

但用法和值类型类似,可以直接用==比较是否相等,

实现原理就是微软重载了string的==运算符

 委托  委托  无。

使用关键字Delegate声明,是存有对某个方法的引用的一种引用类型。

使用+使用委托的多播。

 泛型  泛型

<T>声明泛型,

T只能是引用类型,

可以用extends和super限制T的类型,

<?> 表示通配,

实际上是假泛型。

<T>声明泛型,

T可以是引用类型也可以是值类型

使用:表示泛型约束,如T:new()表示T必须要有无参构造函数,

真正的泛型。

 注解与特性   注解与特性

使用@声明注解,如

@Service
public class AgreementFacadeClientImpl implements AgreementFacadeClient {
....
}

C#引入attribute作为特性,如

[Export(typeof(IPayModule))]
[Export(typeof(IModule))]
public class PayModule : IModule, IPayModule

{

......

}

索引器 索引器 无。 定义了索引器,就可以使用[]取值。
运算符重载 运算符重载 无。 可以对+,-,==等内置的运行符重载,string的==比较符就是运算符重载的结果。
 集合  列表  List是接口,ArrayList才是实现类  IList是接口,List是实现类
   字典  Map  Dictionary
  集合处理

流式api,

对象.stream().filter(x->x.getCount()>0).collect(Collectors.toList())

Linq

对象.Where(x=>x.Count>0).ToList()

使用上方便很多

lambda lambda

()->{},

入参类型为函数式接口,

实质上lambda表达式会在编译阶段被转换为匿名内部类

()=>{},

入参类型为委托delegate

  方法引用
类::实例方法
类::静态方法
对象::实例方法

类.方法

扩展方法 扩展方法
无。要实现类似功能,要编写Util类。
 扩展方法是定义在静态类的静态方法,入参中的this代表使用的对象,是单继承的一种补充。
命名规范 命名规范

接口命名和类命名一样,如Module。

私有字段小写字母开头,如test。

方法命名是小写字母开头,如getSomeThing()

接口命名开头要加大写字母I,如IModule。

私有字段开头要加_,如_test。

方法命名都是单词首字母大写,如GetSomeThing()

源地址:https://www.cnblogs.com/caizl/p/9338343.html

Java和C#语法对比(转)的更多相关文章

  1. Java, C#, Swift语法对比速查表

    原文:Java, C#, Swift语法对比速查表   Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...

  2. Go vs Java vs C# 语法对比

    目录 1. 说明 2. 对比 2.1 关键字(keywords) 2.1.1 Go 2.1.2 Java 2.1.3 C# 2.1.4 小结 2.2 基本数据类型 2.2.1 Go 基本数据类型 2. ...

  3. Java和C#语法对比

    Java 有静态导入,既可以导入静态方法和字段. .NET没有 Java里package和文件夹对应关系是强制的,要改都改.而C#中namespace和文件夹可以不对应,C# 更喜欢在一个projec ...

  4. 十分钟让你明白Objective-C的语法(和Java、C++的对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头 疼,Objective-C的代码在语法上和Java, C++有着很大的区别, ...

  5. 十分钟让你明白Objective-C的语法(和Java、C++的对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有 ...

  6. 在Web开发方面Java跟PHp八大对比

    在Web开发方面Java跟PHp八大对比 <本文摘自百度经验,用来简单对比一下这两种语言> 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和c语言比 ...

  7. OJ题目JAVA与C运行效率对比

    [JAVA]深深跪了,OJ题目JAVA与C运行效率对比(附带清华北大OJ内存计算的对比) 看了园友的评论之后,我也好奇清橙OJ是怎么计算内存占用的.重新测试的情况附在原文后边. ----------- ...

  8. 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

    2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...

  9. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

随机推荐

  1. C语言编程 菜鸟练习100题(31-40)

    [练习31]判断质数 0. 题目: 判断质数 1. 分析: 质数(prime number),指大于 1的.且除 1 和本身以外没有其他因数的自然数. 2. 程序: #include <stdi ...

  2. 【Web前端HTML5&CSS3】12-字体

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 字体 1. 字体相关的样式 2. font-family 3. 几种字体 手写体 艺术体 乱码字体 中文字体 4 ...

  3. Git如何下载clone指定的tag

    Git如何下载clone指定的tag 如上图,我想下载Tags标签为solution-4 的代码,如何处理呢? 命令如下: git clone --branch solution-4 git@gith ...

  4. ONNX MLIR方法

    ONNX MLIR方法 MLIR中的开放式神经网络交换实现. Prerequisites gcc >= 6.4 libprotoc >= 3.11.0 cmake >= 3.15.4 ...

  5. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  6. java.lang.ClassNotFoundException: org.apache.curator.RetryPolicy

    dubbo项目启动过程中遇到这个异常,很明显是找不到curator的包,所以需要引入curator的相关包才可以, curator是zookeeper的客户端框架,且要引入完整,才不会报错 比如: & ...

  7. 【Android编程】android平台的MITM瑞士军刀_cSploit源码解析及中间人攻击复现

    /文章作者:Kali_MG1937 作者博客ID:ALDYS4 QQ:3496925334 未经允许,禁止转载/ 何为MITM欺骗,顾名思义,中间人攻击的含义即为在局域网中充当数据包交换中间人的角色 ...

  8. Task04:集合运算

    4.1 表的加减法 4.1.1 什么是集合运算 集合在数学领域表示"各种各样的事物的总和", 在数据库领域表示记录的集合. 具体来说,表.视图和查询的执行结果都是记录的集合, 其中 ...

  9. 【NX二次开发】Block UI 双精度

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  10. 通过Z-Order技术加速Hudi大规模数据集分析方案

    1. 背景 多维分析是大数据分析的一个典型场景,这种分析一般带有过滤条件.对于此类查询,尤其是在高基字段的过滤查询,理论上只我们对原始数据做合理的布局,结合相关过滤条件,查询引擎可以过滤掉大量不相关数 ...