3 回答
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[]数组。
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];
}
TA贡献1830条经验 获得超3个赞
- 3 回答
- 0 关注
- 1898 浏览
添加回答
举报