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

2024-10-30 13:27:49
有6个网友回答
网友(1):

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

网友(2):

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

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

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

网友(3):

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

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

是的啊 他们都使用了类型转换
最后的是强制转换

网友(4):

i = (int)o;
这句中,语法上(int)是显示声明将右边的对象 o 转换为整形,然后赋值给左边整形变量 i ,但string 类型是不能转变为整型的,编译时会报错.字符(char)型可以转换为整型,你可以用char型转换成整型,输出结果试试看.

网友(5):

C#中的装箱与拆箱。

网友(6):

恩,拆箱和装箱~~~装箱就相当于隐式装换,拆箱显示