关于C#类型转换 求教

MeBoss 2011-09-10 04:56:42
using System;

namespace test1_constrator
{
class Program
{
static void Main(string[] args)
{
int[] i = new int[10];
float[] f = new float[10];
f = (float)i;

int iiii;
float fff;
fff = iiii;

a[] newA = new a[10];
b[] newB = new b[10];
newA = newB;
}
}

class a
{ }
class b : a
{ }
}


为什么 f = (float)i; 这里会报错??????
int是可以转换为float,那为什么不管我是隐式还是显示转换都活在哪里报错呢???
我查了下资料没说是数组的转换必须是引用类型????为什么必须是引用类型,值类型就不可以。数组的类型转换和普通类型转换有什么差别呢,求解
...全文
145 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
MeBoss 2011-09-14
  • 打赏
  • 举报
回复
3Q 谢谢各位
zw19880717 2011-09-13
  • 打赏
  • 举报
回复
数组肯定不能直接转的
chyjty 2011-09-12
  • 打赏
  • 举报
回复
帮顶 学习
  • 打赏
  • 举报
回复
抱歉,不应该说是等于,赋值操作需要类型相匹配(兼容)
  • 打赏
  • 举报
回复
float[] f = new float[10];
f = (float)i;
(float)i转换后也只是一个float型的值(元素),而F是一个数组(集合)
你可以f[0] = (float)i
这是数学里最常见的 “等于”与“属于”的区别
yojinlin 2011-09-12
  • 打赏
  • 举报
回复
幫頂。
诺维斯基 2011-09-12
  • 打赏
  • 举报
回复
顶一个吧
hj460910133 2011-09-12
  • 打赏
  • 举报
回复
数组怎么能这样转换了,只能一个一个转换撒,用循环来赋值撒
lijun822205 2011-09-12
  • 打赏
  • 举报
回复
要转也不是你这样转啥
是数组的嘛
这样试
f = (float[])i;
krenyelang 2011-09-11
  • 打赏
  • 举报
回复
数组可以直接转换吗?
你只可以对其元素进行转换……
而不是将数组进行直接转换操作……
happytonice 2011-09-10
  • 打赏
  • 举报
回复
转换对数组里面的值要一个个的转换
virken0212 2011-09-10
  • 打赏
  • 举报
回复
1、转换不能直接对整个数组一起进行转换,不过可以对数组里面具体的值进行转换
2、在继承时,子类B继承父类A。则子类B既是B,也是A,在转换时,子类B也可以强制转换为父类A
stonespace 2011-09-10
  • 打赏
  • 举报
回复
b类和a类是兼容的,所以newA和newB类型也兼容,可以赋值,
sb1ue 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 meboss 的回复:]

那为什么 newA = newB; 这个不报错呢
[/Quote]
一是因为 newA=newB相当于newB把地址传给了newA
二是因为b继承于a a是父类 所以可以接收子类。
MeBoss 2011-09-10
  • 打赏
  • 举报
回复
值类型的数组转换 和 引用类型的数组转换 有区别吗
MeBoss 2011-09-10
  • 打赏
  • 举报
回复
那为什么 newA = newB; 这个不报错呢
sb1ue 2011-09-10
  • 打赏
  • 举报
回复
只能将数组里面的元素一个一个的转换。
zhy8945 2011-09-10
  • 打赏
  • 举报
回复
数组好像是不能转换的 LZ你可以直接把I定义为float的数组啊
bdmh 2011-09-10
  • 打赏
  • 举报
回复
i是数组,能转吗

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧