1、System.Object
(1)、CLR要求每个类型都要继承自System.Object类型。
eg:class Employee {...}
(2)、CLR要求所有的对象都要用new操作符来创建
eg:Employee e = new Employee();
2、using使用
using引入命名空间
using指示符允许我们为一个类型或者命名空间创建另外的别名
eg:using WintellectWidget = Wintellect.Widget;
3、is 和 as 使用
is操作符可以检查对象是否和给定的类型兼容,并返回判断结果:true 或者 false;且 is 操作符永远不会抛出异常。如果对象引用为null,那么 is 操作符总是返回false。因为没有对象可以来检查其类型。
eg:if(o is Employee)
{
Employee e = (Employee) o;
}
在上面代码中,实际上对对象o的类型检查了2次:
(1)、is 操作符首先检查 o 所引用的对象是否和Employee类型兼容。
(2)、如果兼容,在if语句内,执行类型转换时又会检查o是否为一个Employee的引用。
as操作符可以检查对象是否和给定的类型兼容,如果兼容,as返回一个指向同一对象的非空指针。如果不兼容,as 返回 null。且 as 操作符也不会抛出异常。
eg:Employee e = o as Employee;
if(e != null){}
在上面代码中,只对对象o的类型检查了一次。接下来只需检查e是否为null就可以了。这种检查比检查对象类型高效的多。
4、类型转换
C#中一个类型转换为基类型被认为是安全的隐式操作;
C#中将一个对象转换为它的任何派生类型时,要求进行显示转换,因为这样的转型有可能失败。