c#中int数组怎么转成object数组

int[]a={1,2,3};object[]b=(object[])a;程序会报错。string[]a={"1","2","3"};object[]b=(object[... int[] a={1,2,3};object[] b=(object[])a;
程序会报错。
string[] a={"1","2","3"};object[] b=(object[])a;
程序可以编译通过。
这是什么道理。
展开
 我来答
非典型天秤座
推荐于2017-09-09 · TA获得超过1395个赞
知道大有可为答主
回答量:850
采纳率:0%
帮助的人:1353万
展开全部
这个涉及到装箱的问题,先看这样写
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[]数组。
wulixin1991
2012-03-04
知道答主
回答量:9
采纳率:0%
帮助的人:3.4万
展开全部
数据协变只能用于引用类型,不能用于值类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
箫韶九成凤凰来仪7
推荐于2017-09-06 · TA获得超过378个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:336万
展开全部
  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#高级编程

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
talencz
2008-09-17 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:139万
展开全部
正如一楼所讲,所有东西都是继承于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];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
149032105
2008-09-17 · TA获得超过756个赞
知道小有建树答主
回答量:1029
采纳率:0%
帮助的人:667万
展开全部
所有东西都是继承于objec类~所以能隐式转
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式