C#数据类型转换、转迷糊我了 +_+

1、inti;2、strings="hello";3、objecto=s;4、i=(int)o;且不谈论语法对与错、我想弄明白是把谁转换为谁了?左边转换给右边还是右边转换... 1 、 int i;
2 、 string s = "hello";
3 、 object o = s;
4 、 i = (int)o;

且不谈论语法对与错、我想弄明白是把谁转换为谁了?
左边转换给右边 还是右边转换给左边

初学着 还有、当局者迷 别见笑 ⊙﹏⊙b
那 第“3”句 和 第“4”句 是不是都使用了类型转换啊?
展开
 我来答
kylekover
2009-03-04
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
其实这段语句语法是对的,但会出现异常,i = (int)o;该转换无效。
但既然你不谈论语法错误,我就跟你解释下这几条语句。
1,2你该了解,1是定义了个整形变量,2是定义了一个字符串变量,并且赋值为“hello”。
3,4条语句其实是.net里面的装箱和拆箱操作。
object是一个总的父类,任何类都是object的子类,所以object o = s;是将变量s赋给它的父类变量,在内存区的表现就是object变量o和String变量s指向了同一内存区,即存储了“hello”的内存区。这就是装箱操作。
4语句即拆箱操作,将object指向的内存区的变量赋给变量i。但由于i是整形变量,所以i是没办法接收String类型的变量的,所以4语句会有异常。
你该仔细去看看装箱拆箱操作的资料,很快就会明白的。
以下就是一个正确的装箱拆箱操作:
class A
{
int a;
}

int i;
A s=new A();
s.a=100;
object o=s;
i=(int)o;
Console.WriteLine(s.a);
Console.WriteLine(i);
你会发现输出的都是100。
希望这些对你有帮助
epldlnwynn
2009-03-04 · TA获得超过149个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:155万
展开全部
第三句说是转换也可以说不是转换,
第四句是用到了类型转换。转换为Int类型。

先s转换为Object,然后又把O转换为Int,
其实 s 不用在转换为Object,s 的本身就是一个Object的类型,你可以直接写为:
int i;
string s = "hello";
i = (int)o;

这个时候在i这里就会出现异常了。会说你数据类型不匹配。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
方虹英zc
2009-03-05 · TA获得超过574个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:0
展开全部
首先把 声名三个变量 一个是int类型的i ,一个string类型的s

和一个object 的o
把s赋值"hello"
o=s
4第四步错啦啊
怎么能把int 类型的i="hello"????
不能把"hello"赋给i的

是的啊 他们都使用了类型转换
最后的是强制转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灬空爱灬
2009-03-04 · TA获得超过118个赞
知道答主
回答量:192
采纳率:0%
帮助的人:110万
展开全部
i = (int)o;
这句中,语法上(int)是显示声明将右边的对象 o 转换为整形,然后赋值给左边整形变量 i ,但string 类型是不能转变为整型的,编译时会报错.字符(char)型可以转换为整型,你可以用char型转换成整型,输出结果试试看.

参考资料: http://www.sousuoba.net

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蟹蟹的影子
2009-03-05 · TA获得超过658个赞
知道小有建树答主
回答量:541
采纳率:0%
帮助的人:377万
展开全部
C#中的装箱与拆箱。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kwind8741
2009-03-04 · 超过12用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:47.4万
展开全部
恩,拆箱和装箱~~~装箱就相当于隐式装换,拆箱显示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式