引用类型对象由内存中两个部分组成:引用和数据。
●有引用保存的那部分信息时它指向的数据类型。
●引用转换接受源引用并返回一个指向堆中同一位置的引用,但是引用“标记”为其他类型。
隐式引用转换
●所有引用类型可以被隐式转换为object类型。
●任何类型可以隐式转换到它继承的接口。
●类可以隐式转换到它继承的链中的任何类;它实现的任何接口。
显示引用转换
显示引用转换时从一个普通类型到一个更精确类型的转换。
显示转化包括
●从object到任何引用类型的转换。
●从基类到从它继承的类的转换。
class A
{
public int Field1=50;
}
class B : A
{
public int Field2=500;
}
class Program
{
static void Main(string[] args)
{
//允许
//B var1 = new B();
//A var2 = var1;
//不允许
//A var1 = new A();
//B var2 = (B)var1;
//不允许
//A var1 = new A();
//B var2 = new B();
//var2 = (B)var1;
//允许
//A var1 = null;
//B var2 = (B)var1;
//允许
//B var1 = new B();
//A var2 = var1;
//B var3 = (B)var2;
//允许
A var1 = new B();
B var2 = (B)var1;
Console.WriteLine(var1.Field1);
Console.WriteLine(var2.Field1);
Console.ReadKey();
}
}