类型安全、线程安全

“类型安全”

“静态类型安全”,在编译时检查类型是否一致。

“动态类型安全”,.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#中,被传递的引用参数是类型安全的。

“线程安全”

线程同步,确保多个线程对共享资源进行互斥访问。

原文地址:https://www.cnblogs.com/zxhoo/p/1997563.html