先讓我們了解下什麼叫object類
object類是所有類型的基類,所有類型都是由他派生而來,C#中所有的類都是直接或間接的從Sytem.Object類中繼承,(可能有點迷糊,沒關系,舉個例子,如果Object類是樹干,我們前面所學的所有類就是 樹枝 或者 樹葉 了懂了吧)。因此,對Object類型的變量可以賦予任何類型的值。
對Object類型的變量聲明,采用 object 關鍵字;這個關鍵字是在.Net框架結構為我們提供的預定義名字空間System中定義的,是類System.object 的別名。定義格式是這樣:object 變量名;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
object Int,Str,Doub,Ch; //定義4個object變量
Int = 1; //整形賦值成功
Str = HC666; //string類型賦值成功
Doub = 12.32; //double 類型賦值成功
Ch = '男'; //char 類型賦值成功
Console.WriteLine(Int = {0} Str = {1} Doub = {2} ch = {3},Int,Str,Doub,Ch);
}
}
}
輸出結果:(完全一致^_^)

上面Object的定義中強調了,object是對所有的類型的基類,那我們定義一個Struct類與class類也可以轉化成object嗎?? 在上面的代碼我加入了一些元素:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
public struct Student
{
public string name;
public char sex;
public uint age;
}
static void Main(string[] args)
{
Student stu = new Student{ name = HC666,sex = '男',age = 19 }; //初始化 stu
object m = stu; //將stu轉換為object類型的對象m
Student x = (Student)m; //將object類型的對象m 轉換為Student x 要用強制轉換
Console.WriteLine(name:{0} sex:{1} age:{2},x.name,x.sex,x.age);
}
}
}
結果是這樣的:

通過以上例子說明Struct類型與Class類型是可以與object類型相互轉化的,其轉化過程是這樣:
Struct ---->object---->struct;(只有Struct---->Object是不能輸出值的),在轉化過程中不會改變stu中的值