用过十几种语言,但是java和c#是最为重要的两门。c#发明人曾主导开发了pascal和delphi,加入微软后,参考了c++和java完成了c#和net。大家用过java或c#任意一种的,可以通过本篇文章快速掌握另外一门语言。
基础语法
- 变量声明:Java和C#都使用
type variableName
。 - 条件语句:Java和C#都使用
if
、else if
、else
。 - 循环:Java和C#都支持
for
、while
、do-while
。 - 数组:Java和C#都使用
int[] myArray = new int[10]
。
类和对象
- 类定义:Java和C#都使用
public class ClassName { }
。 - 对象创建:Java和C#都使用
ClassName obj = new ClassName();
。 - 构造函数:Java和C#都支持构造函数,用于创建对象时初始化对象。
- 继承:Java使用
class Child extends Parent { }
,C#使用class Child : Parent { }
。 - 多态:Java和C#都通过方法重写实现多态。
接口和抽象类
- 接口定义:Java和C#都使用
public interface InterfaceName { }
。 - 实现接口:Java使用
class ClassName implements InterfaceName { }
,C#使用class ClassName : InterfaceName { }
。 - 抽象类:Java和C#都使用
public abstract class AbstractClassName { }
。
访问修饰符
- 公共:Java和C#都使用
public
。 - 私有:Java和C#都使用
private
。 - 受保护:Java和C#都使用
protected
。 - 包私有:Java默认访问级别(无修饰符),C#使用
internal
。
异常处理
- try-catch:Java和C#都使用
try { } catch (ExceptionType e) { }
。 - finally:Java和C#都使用
finally { }
。 - 抛出异常:Java和C#都使用
throw new ExceptionType()
。
事件处理
- Java:使用监听器(Listeners)和事件(Events)模型。
- C#:使用事件(Events)和委托(Delegates)。
泛型
- Java:使用
<T>
来定义泛型类、接口和方法。 - C#:使用
<T>
来定义泛型类、接口、方法和委托。
集合
- Java:有
java.util
包,包含List
、Set
、Map
等接口和ArrayList
、HashSet
、HashMap
等实现类。 - C#:有
System.Collections.Generic
命名空间,包含List<T>
、HashSet<T>
、Dictionary<TKey, TValue>
等泛型集合类。
并发和多线程
- Java:使用
java.lang.Thread
类和java.util.concurrent
包来支持多线程和并发。 - C#:使用
System.Threading
和System.Threading.Tasks
命名空间来支持多线程和异步编程。
文件输入/输出
- Java:使用
java.io
和java.nio
包进行文件操作。 - C#:使用
System.IO
命名空间进行文件操作。
特性和框架
- Java:有Spring Boot、Hibernate、Java EE等企业级框架。
- C#:有ASP.NET Core、Entity Framework等企业级框架。
应用程序入口
- Java:使用
public static void main(String[] args)
作为应用程序入口。 - C#:俺也一样。
包和命名空间
- Java:使用
package
关键字定义包。 - C#:使用
namespace
关键字定义命名空间。
依赖管理
- Java:使用Maven或Gradle来管理项目依赖。
- C#:使用NuGet包管理器来管理项目依赖。
编译和运行
- Java:源代码编译成字节码(.class文件),运行在Java虚拟机(JVM)上。
- C#:源代码编译成中间语言(IL),运行在.NET运行时(CLR)上。
语言特性
- Java:支持标记接口、匿名内部类、检查型异常等。
- C#:支持属性(Properties)、索引器(Indexers)、事件(Events)、委托(Delegates)、异步编程模式(async/await)等。
程序集(Assemblies)
- Java字节码:Java编译器将源代码编译为平台无关的字节码,存储在
.class
文件中。 - C# DLL/EXE:C#编译器将源代码编译为中间语言(IL),并打包为程序集(Assembly),存储在
.dll
(动态链接库)或.exe
(可执行文件)中。