C# (读作 see sharp)是一款现代的、面向对象的、面向组件并且类型安全的编程语言。
特性
- 垃圾回收:自动回收不可达的未使用对象的内存
- 空指针类型: 防止使用未指定对象的引用变量
- 异常处理:为错误检测和恢复提供了一种结构化和可扩展的方法
- Lambda表达式:支持函数式编程技术
- 语言集成查询(LINQ)语法:为处理来自任何数据源的数据创建了通用模式
- 异步操作:为构建分布式系统提供了语法
- 统一类型系统:所有c#类型,包括int和double等基本类型,都继承自单个根对象类型。所有类型共享一组公共操作。任何类型的值都可以以一致的方式存储、传输和操作。
- 用户定义类型:支持用户定义的引用类型和值类型。
- 允许对象的动态分配和轻量级结构的内联存储
- 支持泛型方法和类型,这提高了类型安全性和性能。
- 提供了迭代器,它使集合类的实现者能够为客户端代码定义自定义行为。
- c#强调版本控制,以确保程序和库能够以兼容的方式随时间发展
.NET Architecture
c#程序在.net上运行,.net是一个名为公共语言运行时(Common Language Runtime, CLR)的虚拟执行系统和一组类库。CLR是微软对公共语言基础结构(CLI)的实现,这是一个国际标准。CLI(common language infrastructure,CLI)是创建执行和开发环境的基础,在这些环境中,语言和库可以无缝地协同工作。
用c#编写的源代码被编译成符合CLI规范的中间语言( intermediate language, IL)。IL代码和资源(如位图和字符串)存储在程序集中,通常以.dll为扩展名。程序集包含清单,清单提供有关程序集(assembly)的类型、版本和区域性的信息。
当c#程序被执行时,程序集被加载到CLR(Common Language Runtime, CLR)中。CLR执行即时(JIT)编译,将IL( intermediate language, IL)代码转换为本机机器指令。CLR提供了与自动垃圾收集、异常处理和资源管理相关的其他服务。由CLR执行的代码有时被称为“托管代码”。“非托管代码”被编译成针对特定平台的本机机器语言。
语言互操作性是.net的一个关键特性。c#编译器生成的IL代码符合通用类型规范(ommon Type Specification, CTS)。c#生成的IL代码可以与.net版本的f#、Visual Basic、c++生成的代码交互。还有超过20种其他的cts兼容语言。一个程序集可以包含用不同的.net语言编写的多个模块。这些类型可以相互引用,就好像它们是用同一种语言编写的一样。
除了运行时服务,. net还包括大量的库。这些库支持许多不同的工作负载。它们被组合到提供各种有用功能的命名空间(namespace)中。这些库包括从文件输入和输出到字符串操作到XML解析,到web应用程序框架到Windows窗体控件的所有内容。典型的c#应用程序广泛使用.net类库来处理常见的“管道”事务。
有关.net的更多信息,请参见.net概述。