回覆列表
  • 1 # 使用者5524264373265

    這個涉及到裝箱的問題,先看這樣寫

    int i=10;

    object o=(object)i;

    這樣寫是沒有問題的,因為i是一個值型別,在顯示轉換或者隱式轉換時都會先建立一個object型別的引用,然後將i的值賦給該引用所指向的值。這個操作被稱為裝箱。

    對於int[] a={1,2,3};object[] b=(object[])a;

    a陣列中儲存的是1,2,3這三個實際的值,所以在轉換時,(object[])a無法將a所有的值型別物件“直接”轉換為引用型別,所以編譯器不會透過這個轉換,但這樣寫是沒問題的:

    int[] iArray ={ 1, 2, 3 };

    object[] oArray = new object[iArray.Length];

    for (int i = 0; i

    {

    oArray[i] = (object)iArray;

    }

    對於string[] a={"1","2","3"};來說,string本身就是引用型別,a陣列中儲存的就是"1","2","3"這些元素的地址而非其值本身,所以可以直接轉化成object[]陣列。

  • 中秋節和大豐收的關聯?
  • 芥末豬排是怎樣製作的呢?