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

来源:百度知道 编辑:UC知道 时间:2024/06/18 06:17:54
1 、 int i;
2 、 string s = "hello";
3 、 object o = s;
4 、 i = (int)o;

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

初学着 还有、当局者迷 别见笑 ⊙﹏⊙b
那 第“3”句 和 第“4”句 是不是都使用了类型转换啊?

其实这段语句语法是对的,但会出现异常,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。
希望这些对你有帮助

第三句说是转换也可以说不是转换,
第四句是用到了类型转换。转换为Int类型。

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

这个时候在i这里就会出现异常了。会说你数据类型不匹配。

首先把 声名三个变量 一个是int类型的i ,一个string类型的s

和一个object 的o
把s赋值"hello"
o=s
4第四步错啦啊
怎么能把in