Python 开发者学习 C# 的路线图
C# 和 Python 具备类似的概念。 如果你已经了解 Python,这些熟悉的构造可以帮助你学习 C#。
- 面向对象:Python 和 C# 都是面向对象的语言。 Python 中类的所有概念都适用于 C#,即使语法不同也适用。
- 跨平台:Python 和 C# 都是跨平台语言。 使用这两种语言中的任意一种编写的应用都可以在许多平台上运行。
- 垃圾回收:这两种语言都通过垃圾收集来应用自动内存管理功能。 运行时从未引用的对象中回收内存。
- 强类型化:Python 和 C# 都是强类型化语言。 类型强制不会隐式发生。 后面会介绍一些差异,因为 C# 是静态类型,而 Python 是动态类型。
- Async / Await:Python 的
async
和await
功能直接受到 C# 的async
和await
支持的启发。 - 模式匹配:Python 的
match
表达式和模式匹配类似于 C# 的模式匹配switch
表达式。 可以使用这些功能来检查复杂数据表达式,以确定它是否与模式匹配。 - 语句关键字:Python 和 C# 有许多相同关键字,例如
if
、else
、while
、for
等。 虽然并非所有语法都相同,但它们十分相似,如果你了解 Python,就可以阅读 C#。
开始学习 C# 时,你将学习以下重要概念,这些概念在 C# 与 Python 中的含义不同:
- 缩进与标记:在 Python 中,换行和缩进是一流的语法元素。 在 C# 中,空格并不重要。 标记,例如
;
用于分隔语句,其他标记如{
和}
用于控制if
和其他块语句的块范围。 但是,为了便于阅读,大多数编码样式(包括这些文档中使用的样式)都使用缩进来强化{
和}
声明的块范围。 - 静态类型语言:在 C# 中,变量声明包括其类型。 将变量重新分配给不同类型的对象将生成编译器错误。 在 Python 中,在重新分配时,类型可能会发生更改。
- 可以为 null 的类型:C# 变量可为空或不可为空。 不可为 null 的类型是不能为 null(或不包含任何类型)的类型。 它始终需要引用有效的对象。 相比之下,可以为 null 的类型可以引用有效对象或 null。
- LINQ:组成语言集成查询 (LINQ) 的查询表达式关键字与 Python 中的关键字不同。 但是,Python 库(如
itertools
、more-itertools
和py-linq
)具备类似的功能。 - 泛型:C# 泛型使用 C# 静态类型语言对类型参数提供的参数进行断言。 泛型算法可能需要指定参数类型必须满足的约束。
最后,有一些 Python 功能在 C# 中不可用:
- 结构化(鸭子)语言类型:在 C# 中,类型具有名称和声明。 除元组外,具有相同结构的类型不可互换。
- REPL:C# 不具备读取-求值-打印循环 (REPL),无法快速构建解决方案原型。
- 必不可少的空格:需要正确使用大括号
{
和}
来标准块范围。
如果你了解 Python,那么 C# 的学习过程会很顺利。 这些语言具有相似的概念和相似的习语。