C# 10 和 .NET 介绍

C# 是一种通用的、类型安全的、面向对象的编程语言。目标语言的关键是程序员的生产力。为此,C# 平衡了简单性,表现力和表现力。C# 语言是平台中立的,适用于一系列特定于平台的运行时。

面向对象

C# 是面向对象范式的丰富实现,其中包括封装、继承和多态。封装意味着创建一个对象的边界,以将其外部(公共)行为与其内部行为分开(私人)实施细节。以下是 从面向对象的角度来看C# 的显着特征: 统一类型系统 C# 中的基本构建块是数据和函数的封装单元,称为类型。 C# 有一个统一的类型系统,其中所有类型最终共享一个共同的基类型。这意味着所有类型,无论它们代表业务对象或者是原始类型,例如数字,共享相同的基本类型功能。例如,任何类型的实例都可以转换为字符串通过调用它的 ToString 方法。 类和接口 在传统的面向对象范例中,唯一的类型是类。在 C# 中,还有其他几种类型,其中一种是接口。一个接口就像一个不能保存数据的类。这意味着它只能定义行为(而不是状态),它允许多重继承和分离在规范和实现之间。 属性、方法和事件 在纯面向对象范式中,所有函数都是方法。 在 C# 中,方法只是一种函数成员,它还包括属性和事件(还有其他事件)。 属性是封装了一部分对象状态的函数成员,例如按钮的颜色或标签的文本。 事件是简化对对象状态更改的操作的函数成员。 尽管 C# 主要是一种面向对象的语言,但它也借鉴了函数式编程范式;具体来说: 函数可以被视为值 使用委托,C# 允许将函数作为值传递给其他函数或从其他函数传递功能。 C# 支持纯度模式 函数式编程的核心是避免使用的变量的值发生改变,支持声明模式。 C# 具有可帮助这些模式的关键功能,包括即时编写具有能“捕获”变量(lambda 表达式)的未命名函数的能力和执行列表或通过查询表达式进行反应式编程的能力。 C# 还提供了记录,它使编写不可变(只读)类型变得容易。

类型安全

C# 主要是一种类型安全的语言,这意味着类型的实例仅通过他们定义的协议就可以交互,从而确保每种类型的内部一致性。 例如,C# 阻止您把字符串类型看作整数类型来使用。 更具体地说,C# 支持静态类型,这意味着该语言强制类型编译时的安全性。这是在运行时强制执行类型安全的补充。 静态类型甚至在程序运行之前就消除了一大堆错误。它将运行时单元测试的负担转移到编译器上以验证所有程序中的类型正确地组合在一起。这使得大型程序更容易管理、更可预测、更稳健。此外,静态类型允许工具例如 Visual Studio 中的 IntelliSense 可以帮助您编写程序,因为它知道对于给定的变量,它是什么类型,因此可以在变量上调用什么方法。这样的工具还可以在程序中的任何地方识别一个变量,使用类型或方法,允许进行可靠的重构。

C# 还通过dynamic关键字允许你的部分代码拥有动态类型。然而,C# 主体上仍然是一个静态类型语言。

C# 也被称为强类型语言,因为它的类型规则被严格执行(无论是静态的还是在运行时)。例如,你不能对一个接受整数的函数传入浮点数来调用,除非您首先明确将浮点数转换为整数。这有助于防止错误。

内存管理

C# 依靠运行时来执行自动内存管理。Common Language Runtime (CLR)有一个垃圾收集器,作为你程序的一部分执行,为不再引用的对象回收内存。这解除程序员显式地为一个对象释放内存的负担,消除了C++等语言遇到的指针不正确的问题。

C# 并没有消除指针:它只是让大多数编程任务都不需要它们。对于性能关键的热点和互操作性,在标记为不安全的块中允许指针和显式内存分配。

CLRs, BCLs, and Runtimes

C# 程序的运行时支持包括公共语言运行时CLR和基类库BCL。运行时还可以包括更高级别的应用程序层,包含用于开发富客户端、移动或 Web 应用程序的库(请参阅图 1-1)。存在不同的运行时以允许不同类型的应用程序,以及不同的平台。

公共语言运行时CLR

公共语言运行时 (CLR) 提供基本的运行时服务,例如自动内存管理和异常处理。 (“common”一词指的是同一运行时可以和其它语言的托管程序共享,例如 F#、Visual Basic 和托管 的C++。)

C# 被称为托管语言,因为它将源代码编译成托管语言代码,以中间语言 (IL) 表示。 通常在执行前,CLR 会将 IL 转换成机器的原生代码,例如 X64 或 X86。这称为即时 (JIT) 编译。提前时间编译(Ahead-of-Time)也可用于改进大型程序集的启动时间或资源受限的设备(并在开发时满足 iOS 应用商店规则移动应用程序)。

托管代码的容器称为程序集。程序集不仅包含 IL 还有类型信息(元数据)。元数据的存在允许 程序集引用其他程序集中的类型而不需要额外的文件。

程序可以查询自己的元数据(反射),甚至可以在运行时生成新的 IL。

基类库BCL

CLR 总是附带一组称为基类库 (BCL) 的程序集。BCL 为程序员提供核心功能,例如集合、输入/输出、文本处理、XML/JSON 处理、网络、加密、互操作、并发、和并行编程。

BCL 还实现了 C# 语言本身需要的类型(例如作为枚举、查询和异步)并允许您显式访问CLR,例如反射和内存管理。

运行时Runtimes

运行时(也称为框架)是您下载并安装的可部署单元。运行时由一个 CLR(及其 BCL)和一个可选的应用程序层——它特定于您正在编写的应用程序类型——Web、移动、富客户端等等(如果您正在编写命令行控制台应用程序或非 UI 库,您不需要应用层。) 在编写应用程序时,您针对特定的运行时,这意味着您的应用程序使用并依赖于运行时提供的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值