我们可以使用指针作为一个例子。在C++中拥有一个指针,你能zi you地把它强制转换成为任何类型,包括做出诸如把一个int*(整型指针)强制转换成一个double *(双精度指针)这样的傻事。只要内存支持这种操作,它就能工作。这并不是你所想象的企业级编程语言的类型安全。
原则性的问题,C#实施最严ge的类型安全,以保护自己及垃圾收集器(garbage collector)。因此必须遵守C#中一些有关变量的规则:
你不能使用没有初始化的变量。对于对象的成员变量,编译器负责清零。而局部变量,则由你负责清零。当你使用一个没有初始化的变量时,编译器会教你怎么做。优点是能够避免由于使用不经初始化的变量计算结果而导致的错误,而你还不知道这些奇怪的结果是如何产生的。
C#取消了不安全的类型转换。不能把一个整型强制转换成一个引用类型(如对象),而当向下转换时,C#验证这种转换是正确的。(也就是说,派生类真的是从向下转换的那个类派生出来的。)
边界检查是C#的一部分。再也不会出现这种情况:当数组实际只定义了n-1个元素,却超额地使用了n个元素。
算术运算有可能溢出结果数据类型的范围。C#允许在语句级或应用程序级检测这些运算。在允许检查溢出的情况下,当溢出发生时将会引发一个异常。
在C#中,被传递的引用参数是类型安全的。
新闻热点
疑难解答
图片精选