亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c#中int數組怎么轉成object數組

c#中int數組怎么轉成object數組

C#
一只名叫tom的貓 2019-04-04 02:02:16
int[] a={1,2,3};object[] b=(object[])a;程序會報錯。string[] a={"1","2","3"};object[] b=(object[])a;程序可以編譯通過。這是什么道理。
查看完整描述

3 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

這個涉及到裝箱的問題,先看這樣寫
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 < iArray.Length; i++)
{
oArray[i] = (object)iArray;
}
對于string[] a={"1","2","3"};來說,string本身就是引用類型,a數組中存儲的就是"1","2","3"這些元素的地址而非其值本身,所以可以直接轉化成object[]數組。

查看完整回答
反對 回復 2019-04-05
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

所有東西都是繼承于objec類,不過你這個object[] b=(object[])a;是顯示轉轉換,隱式轉換是object[] b=a;

還有所有Object 類中都包含ToString() 而沒有ToInt之類的.....

你的int[] a={1,2,3}要想轉換成object[] b;
int[] a ={1,2,3,4};
object[] b=new object [a.Length];
for (int i = 0; i < a.Length; i++)
{
b[i] = (object)a[i];
}



查看完整回答
反對 回復 2019-04-05
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

  1. 有以下幾種方法

    (1)可以通過重新定義來進行轉換:

        object[] arr = new object[] arr[iarr.Length];

        for(int i=0;i<iarr.Length;i++)

        {

            arr[i] = iarr[i];

        }

    (2) 通過list間接轉換

        List arr = new List(iarr);

        List.ToArray()

2. 由于存儲結構的問題,c#不能直接對數組進行轉換,建議通過List來代替數組這種低級類型。List的好處很多,如:

    (1) 可自動改變大小

    (2) 線程安全

    (3) 提供多種實用函數

3.參考書目:

    c#高級編程


查看完整回答
反對 回復 2019-04-05
  • 3 回答
  • 0 關注
  • 1957 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號