C#中的万物之父即为object类,object类是所有引用类型和值类型的父类,在编写程序时,可以利用里氏替换原则用object容器来装载其他类型的变量,在使用时,引用类型的变量需要利用is与as来搭配调用,值类型的变量则需要利用强转来调用。
用object类来装载值类型的变量的操作称为装箱,利用强转来使用它们的操作称为拆箱。装箱过程中涉及到将存储在栈空间内的变量向堆内存空间内迁移的操作,会涉及到一定的性能消耗,所以要谨慎使用。
cs
namespace ConsoleApp8
{
class Father
{
}
class Son : Father
{
public void Speak() { Console.WriteLine("Hello, World!"); }
}
class Program
{
static void Main(string[] args)
{
object o = new Son();
if (o is Son)
{
(o as Son).Speak();
}
object o1 = 1f;
float f = (float)o1;
object o2 = "123123";
string str = o2 as string;
object arr = new int[3];
int[] arr2 = arr as int[];
static void TestFun(params object[] array) { }
TestFun(1, 1.2f, "123123", new Son());
}
}
}