类型安全性:
C#首先是一种类型安全的语言,这意味着类型只能够通过他们定义的协议进行交互,从而保证每一种类型的内部一致性。例如,c#不允许将字符串类型作为整型进行处理。
C#支持静态类型化,这意味着这种语言会在编译时执行静态类型安全性检查。另外一种是动态类型安全性,.NET CLR在运行时执行动态类型安全性检查。
静态类型化能够在程序运行之前去除大量的错误。将大量的运行时单元测试转移到编译器中,验证程序中所有类型之间都是相互合适的。而且,静态类型化使一些诸如VS等工具更有助于编写程序,因为他知道某个特定变量类型是什么,因此也知道能够调用哪些方法来处理这个变量。
C#之所以被称为一种强类型语言,是应为他的类型规则(以静态或动态方法执行)是非常严格的。
强类型也是c#代码能够在沙箱中运行的原因之一。沙箱指的是,安全性的所有方面都由主机控制的一种环境。
内存管理:
C#依靠运行时环境来执行自动的内存管理。CLR有一个垃圾回收器,他是作为程序一部分运行的,负责回收不再被引用的对象所占的内存。
CLR和.NET FrameWork:
.NET FrameWork由名为Common Language Runtime的运行时环境和大量的程序库组成。这些程序库由核心程序库和应用程序库组成,应用程序库依赖核心程序库。
CLR是执行托管代码的运行时环境。C#是将几种源代码编译为托管语言之一。托管代码会被打包成程序集,他可以是可执行文件(.exe文件)或程序库(.dll)的形式,包括类型信息或元数据。
托管代码用IL(Intermediate Language)表示。当CLR加载一个程序集时,他会将IL转换为该主机的原生代码,如X86,。这个转换是通过CLR的JIT(Just-In-Time)即时编译器执行的。
编译:
C#编译器把一系列.cs扩展名的源代码文件编译成程序集。程序集是.NET中的最小打包和部署单元。一个程序集可以是一个应用程序,或者是一个库。一个普通的控制台程序或Windows应用程序是一个.exe文件,包含一个main方法。一个库是一个.dll文件,他相当于一个没有入口的.exe文件。库是用来被应用程序或其他库调用(引用)的。
C#编译器的名称是csc.exe。
预定义类型:
在C# 中,预定义类型(也成为内建类型)被当做c#关键字。在.NET FrameWork中的system命名空间中包含了许多并不是预定义类型的重要类型。比如DateTime。
命名空间:
命名空间是类型名称必须唯一的作用域。类型通常被组织到分层的命名空间里,这样既避免了命名冲突又使类型名更容易被找到。命名空间是独立于程序集的。