“类型安全”
“静态类型安全”,在编译时检查类型是否一致。
“动态类型安全”,.net4.0里的dynamic类型,在运行时,会提前获得dynamic类型实际的类型。(异常不知道算不算?)
string[] s = new string[10];
for (int i = 0; i < 100; i++)
{
Console.WriteLine(s[i]);
}
对任何引用的对象进行操作,CLR都知道此对象是何种类型的; CLR在对一个引用对象进行操作时,它先会检查此引用的类型, 查看本次操作是否有效;若无效,编译将不能通过。
从另一个方面来说, “C#是类型安全的”指的是:
CLR在程序被编译时就会检查所有对象的有效性,而不是在运行时再检查所有对象的有效性,这样就会避免了在运行时 出现大的错误。
类型安全近似于所谓的内存安全(就是限制从内存的某处,将任意的字节合复制到另一处的能力)。
CLR一个很重要的特性就是Type安全。CLR在任何时候都知道某个对象的类型。你可以通过GetType方法获得,由于该方法不是虚函数,因此不能被覆盖,也就是说返回的值是永远真实的。
类型安全可以静态方式实施,及早在编译时期就捕捉到潜藏的错误;或者以动态方式,在执行时期关联类型的资讯,并在必要时检测即将发生的错误。类型安全是编程语言的性质,而不是程式所自有的。例如,有可能以类型不安全的语言,编写出类型安全的程式。在此是以编程语言为主,而不讨论以个人能力维护的类型安全。
在C#中,被传递的引用参数是类型安全的。
“线程安全”
线程同步,确保多个线程对共享资源进行互斥访问。